如何像这样打印xml数据?
我有这样的XMl文件如何像这样打印xml数据?,xml,perl,Xml,Perl,我有这样的XMl文件 <orderinfo> <data> <Id>raj</Id> <Customer>bvr</Customer> <Suppliers> <Supplier Id="svr" /> <Supplier Id="dvr" /> <Supplier Id="klr" /> </Suppliers> <
<orderinfo>
<data>
<Id>raj</Id>
<Customer>bvr</Customer>
<Suppliers>
<Supplier Id="svr" />
<Supplier Id="dvr" />
<Supplier Id="klr" />
</Suppliers>
</data>
<data>
<Id>svr</Id>
<Customer>raj</Customer>
<Suppliers>
<Supplier Id="avr" />
<Supplier Id="csr" />
<Supplier Id="ksr" />
</Suppliers>
</data>
<data>
<Id>avr</Id>
<Customer>svr</Customer>
<Suppliers>
<Supplier Id="Bpv" />
<Supplier Id="Wrr" />
<Supplier Id="Sdr" />
</Suppliers>
</data>
<data>
<Id>csr</Id>
<Customer>svr</Customer>
<Suppliers>
<Supplier Id="bvs" />
<Supplier Id="vvs" />
<Supplier Id="Ssv" />
</Suppliers>
</data>
<data>
<Id>klr</Id>
<Customer>PUMC</Customer>
<Suppliers>
<Supplier Id="ssn" />
<Supplier Id="qis" />
<Supplier Id="nan" />
</Suppliers>
</data>
</orderinfo>
这里“bvr”是顶级客户,因为它不等于数据节点的任何Id标记。然后打印这是顶级客户。下一步打印该节点Id和该节点供应商Id。
现在开始使用此供应商Id,匹配每个供应商Id等于数据节点的任何Id标记,在本例中,“供应商Id=“svr”等于第二个数据节点“Id”
然后打印供应商Id。然后去搜索相同的程序,重新生成顶级客户的供应商Id。在此示例中,第二个供应商Id“dvr”与任何
数据节点Id,所以只需打印该Id即可。第三个供应商Id与最后一个数据节点Id匹配,因此打印最后一个数据供应商Id。然后现在转到“svr供应商Id”,执行相同的程序
为了理解,我展示了图形表示形式。我怎样才能像那样打印这些标记元素数据。
请帮助我,因为我是初学者。这对我来说非常复杂。对于初学者,您可以使用解析XML并将其转换为DOM树。请参阅下面的示例,该示例加载示例并打印Id
标记的值:
use XML::LibXML;
my $dom = XML::LibXML->load_xml(location => 'filename.xml');
my $root = $dom->documentElement();
for my $data ($root->findnodes('data')) {
print $data->findvalue('Id'), "\n";
}
查看并查找访问数据和遍历的可用方法。您的“XML”“无效。XML需要一个根元素,所以问题分为两部分。1/将XML转换为合适的节点树。2/把那棵树变成某种图形表示。你到底被困在哪里了?到目前为止你有什么?@帮助我将xml转换为节点树。
use XML::LibXML;
my $dom = XML::LibXML->load_xml(location => 'filename.xml');
my $root = $dom->documentElement();
for my $data ($root->findnodes('data')) {
print $data->findvalue('Id'), "\n";
}