• ベストアンサー

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>

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.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)

回答No.1

そのものずばり、"XML::Parser"というモジュールがあります。 以下のURLに基本的な使い方が載っていますので、参考にされてはいかがでしょうか。

参考URL:
http://lightly.plala.jp/memo/xml.html

関連するQ&A