我想解析我在此處具有的XML文件並打印internal
元素的id
屬性。Perl XML ::簡單用於解析內部節點
這是XML文件
<?xml version="1.0"?>
<!DOCTYPE test SYSTEM "http://www.kegg.jp/kegg/xml/KGML_v0.7.1_.dtd">
<test name="A" >
<node id="11" name="test1" >
<internal id="111" name="A111"/>
</node>
<node id="12" name="B">
<internal id="121" name="B121"/>
<internal id="122" name="B122"/>
</node>
</test>
這裏是代碼,這時候一個一個節點有兩個內部屬性
use strict;
use warnings;
use XML::Simple;
use Data::Dumper;
my $xml=new XML::Simple;
my $doc=$xml->XMLin("test.xml",KeyAttr => ['id']);
print Dumper($doc);
foreach my $node (sort keys %{$doc->{node}}) {
print $doc->{node}->{$node}->{internal}->{id}."\n";
}
這裏是翻斗車的樣子
$VAR1 = {
'name' => 'test1',
'node' => {
'11' => {
'name' => 'A',
'internal' => {
'name' => 'A111',
'id' => '111'
}
},
'12' => {
'name' => 'B',
'internal' => {
'122' => {
'name' => 'B122'
},
'121' => {
'name' => 'B121'
}
}
}
}
};
失敗
@mpapec則結果爲111,122,它基本上省略了ID中的一個(當它是2個IDS) – shaq
有許多關於如何解析可能有益KEGG XML文件PerlMonks相關的帖子。例如,[解析和XML文件](http://www.perlmonks.org/?node_id=989488),[解析XML使用LibXML](http://www.perlmonks.org/?node_id=1043959),[用SAX解析一個沒有根節點的XML文檔](http://www.perlmonks.org/?node_id=165318)。例如,在這裏也有一些,[使用XML :: Rules perl解析xml文件](http://stackoverflow.com/questions/17609381/parsing-xml-files-using-xmlrules-perl)。 – SES