11.2 XMLパーサ
- XML文書をパーサで解析するってのは理解できたけど、練習問題の「CGIを使って入力された文字列をパースし、結果を表示する」ってのが分からなかった。
my $content = $query->param('xml');
(中略)
my $parser = new XML::Parser(ErrorContext =>3);
eval("\$parser->parse(\$content)");
- htmlフォームで入力された文字列を$contentに格納する、これは分かる
- 格納した$contentのリファレンスを、$parserのリファレンスでパースする????
- わからねぇ・・・
11.3 XMLの変換
- 本に載ってるヤツがどうにも動かなかった
- 悔しいので、他のモジュール使って解決
use utf8;
use Encode;
use Data::Dumper;
use XML::Simple;
my $xml = <<'XML'
<?xml version="1.0" encoding="utf-8"?>
<addressbook>
<title>住所録</title>
<info>
<name>鈴木</name>
<address>東京都世田谷区</address>
<tel>03-xxxx-xxxx</tel>
</info>
<info>
<name>山田</name>
<address>大阪府大阪市</address>
<tel>06-xxxx-xxxx</tel>
</info>
<info>
<address>宮城県仙台市</address>
<name>佐藤</name>
<tel>022-xxx-xxxx</tel>
</info>
</addressbook>
XML
;
my $parser = XML::Simple->new;
my $data = XMLin($xml);
foreach ( keys $data->{info} ) {
my $line
= $_ . ','
. $data->{info}->{$_}->{address} . ','
. $data->{info}->{$_}->{tel} . "\n";
print encode ( utf8, $line );
}
11.4 XMLの検索
- XPathを使ったノードのたどり方や要素の抜き出し方、要素数などの求め方
「独習Perl 第2版」終わり。
- 例示されているスクリプトに
use strict
,use warnings
が無くて難儀した
- CGI、特にsocket使ってサーバとクライアントで通信をさせるのは楽しかったし、なんか可能性を感じる
- CGIのスクリプトをmojoliciousで書き直してみるのも勉強にな理想とか思ったり