- ベストアンサー
PerlでXMLを解析して出力する。
PerlでXMLで必要なデータだけ抽出しようと考えています。 下のサンプルXMLを次のテキストに変換したいのですが 具体的な記述方法が知りたく質問しました。 さくら 子供1 子供2 きく 子供3 正規表現でなくXMLパーサ?というもので解決したいです。「宿題ではありません、あしからず(^^;」 <?xml version="1.0"> <E1> <E2> <list>example1></list> <list>example2></list> ... </E2> <E3> <class name="さくら"> <heya> <hito> <seimei>子供1</seimei> </hito> <hito> <seimei>子供2</seimei> </hito> </heya> </class> <class name="きく"> <heya> <hito> <seimei>子供3</seimei> </hito> </heya> </class> </E3> </E2> </E1>
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
XML::Simple モジュールを使った方法。 <?xml version="1.0"> は、 <?xml version="1.0" ?> で文字コードは UTF-8 example1> は、 example1 ---------------------------------------------------------------- use encoding 'UTF-8', STDOUT => "shiftjis"; use XML::Simple; my $xml; { local $/ = undef; open(FILE, "<:encoding(UTF-8)", "data.xml"); $xml=<FILE>; close(FILE); } my $tree = XMLin($xml, ForceArray => 1); while(my ($name, $class) = each(%{$tree->{E3}[0]->{class}})) { print $name . "\n"; for my $hito (@{$class->{heya}[0]->{hito}}){ print " ".$hito->{seimei}[0] ."\n"; } }
その他の回答 (1)
- twinkleluz
- ベストアンサー率52% (98/185)
そのものずばり、"XML::Parser"というモジュールがあります。 以下のURLに基本的な使い方が載っていますので、参考にされてはいかがでしょうか。