我的XML看起来是这样的:如何导航XML所有标签包括属性
<Servers type="Container">
<Server type="Category">
<HostName type="Property">dmitri-spB</HostName>
<HostIPAddress type="Property">14.341.516.564</HostIPAddress>
在这个数据中最案件,我不需要的属性 - 或者至少我只见过在我可能需要的数据中有一个案例。在任何情况下...如果XML是这样的:
<Servers>
<Server>
<HostName>dmitri-spB</HostName>
<HostIPAddress>14.341.516.564</HostIPAddress>
...我会做这样的事情:
my $parser = XML::LibXML -> new();
my $tree = $parser -> parse_file ($source_dir."\\".$xmlfiles);
for my $Servers ($tree->findnodes ('/Servers')) {
foreach my $Server ($Servers->findnodes('./Server')) {
$hostname = $Server->findvalue('HostName');
$hostIP = $Server->findvalue('HostIPAddress');
}
}
我试图在字面上使用整个标签使用同样的方法代码,并得到了“XPath错误:无效的表达式”。
因此,确实存在两个问题 - 当我不关心属性时如何浏览和提取,以及如何在属性显着时执行此操作?也许这是一个XPath问题,但我根本无法将XPath文档与我正在尝试做的事情联系起来。建议?
一个
type
属性是什么XPath表达式给你“的XPath错误:无效的表达式”所有Server
节点? –你是否尝试运行上面显示的示例代码?它可能工作得很好。 – mirod