我有一个 xml 文件,我想将入口节点的 id 与反应节点的 id 进行比较,如果与下面的示例相同,我想访问反应的所有信息(基板 id 和产品 id)。我有两个产品 ID,这段代码给出了第一个这是 XML 文件
<?xml version="1.0"?>
<!DOCTYPE pathway SYSTEM "http://www.kegg.jp/kegg/xml/KGML_v0.7.1_.dtd">
<!-- Creation date: May 31, 2012 14:53:24 +0900 (GMT+09:00) -->
<pathway name="path:ko00010" org="ko" number="00010" >
<entry id="13">
</entry>
<entry id="37" >
</entry>
<reaction id="13" name="rn:R01070" type="reversible">
<substrate id="105" name="cpd:C05378"/>
<product id="132" name="cpd:C00118"/>
<product id="89" name="cpd:C00111"/>
</reaction>
</pathway>
这是我的代码
use strict;
use warnings;
use XML::Simple;
my $xml = new XML::Simple;
my $data = $xml->XMLin("file.xml");
foreach my $entry (keys %{$data->{entry}}) {
foreach my $reaction (keys %{$data->{reaction}}) {
if ($data->{reaction}->{id} eq $data->{entry}->{$entry}->{id} ){
print "substrate:::$data->{reaction}->{substrate}->{id}\n";
print "product:::$data->{reaction}->{product}->{id}\n";
}
}
}