dポイントプレゼントキャンペーン実施中!

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>

A 回答 (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";
}
}
    • good
    • 0

そのものずばり、"XML::Parser"というモジュールがあります。


以下のURLに基本的な使い方が載っていますので、参考にされてはいかがでしょうか。

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!