- ベストアンサー
PerlでXMLの値を取得する方法
- Perlを使ってXMLの処理をする際に、指定のキーと値を取得する方法を紹介します。
- 上記のXMLの例では、Person->Name{'A'}->Seiseki->Englishで50という値を取得する方法があります。
- 直感的な方法として、PerlのXML::XPathモジュールを使うことで、指定のパスをたどって値を取得することができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
http://weeeblog.net/logs/2008/04/04_1632.php XML::Simpleを使えばできます。 ・・・がデータ構造的にbazaxさんの言うようにはできません(あとPerlの文法的にも難しいと思います) bazaxさんの提示したXMLをprint Dumperしてみると次のようになりました。 ---------------------------------- $VAR1 = { 'Age' => [ '29', '32' ], 'Seiseki' => [ { 'Math' => '60', 'English' => '50', 'Gymnastic' => '10' }, { 'Math' => '40', 'English' => '60', 'Gymnastic' => '50' } ], 'Sex' => [ 'M', 'F' ], 'Name' => [ 'A', 'B' ] }; ---------------------------------- このようにAとBの結果が混ざってしまいます。 データ構造を ---------------------------------- <Person> <A> <Age>29</Age> <Sex>M</Sex> <Seiseki> <English>50</English> <Math>60</Math> <Gymnastic>10</Gymnastic> </Seiseki> </A> <B> <Age>32</Age> <Sex>F</Sex> <Seiseki> <English>60</English> <Math>40</Math> <Gymnastic>50</Gymnastic> </Seiseki> </B> </Person> ---------------------------------- のように変えれば ---------------------------------- $VAR1 = { 'A' => { 'Age' => '29', 'Seiseki' => { 'Math' => '60', 'English' => '50', 'Gymnastic' => '10' }, 'Sex' => 'M' }, 'B' => { 'Age' => '32', 'Seiseki' => { 'Math' => '40', 'English' => '60', 'Gymnastic' => '50' }, 'Sex' => 'F' } }; ---------------------------------- となり、 ---------------------------------- my $xml = XMLin($filename); print $xml->{A}->{Seiseki}->{English} # => 50 ---------------------------------- のように値にアクセスできます。