我有一个类似
的xml<Screen>
<window name="gui">
<widget name="status" pos="0:0">
<timedate name="timedate"/>
<message name="message"/>
</widget>
</window>
</Screen>
关于这个xml的一个好处是每个节点都有唯一的名称。它不会在xml中的任何地方重复。
要查找节点,我可以使用xpath查询并获取其存在/不存在的结果,但我需要找到遍历的路径。
示例我可以使用xpath查询'// timedate'搜索timedate节点,但除此之外我还需要遍历的路径,即Screen / window / widget / timedate。
请告诉我一些检索路径的方法。
我们将非常感谢您的帮助。
答案 0 :(得分:1)
请参阅此答案以获取完整的解决方案:https://stackoverflow.com/a/4747858/36305。
虽然解决方案是在XSLT中,但如有必要,代码可以转换为任何其他编程语言。
答案 1 :(得分:1)
具体细节取决于您用于处理XML的模块。例如,在XML::XSH2中,您可以使用pwd
命令。
更详细的XML::LibXML示例:
#!/usr/bin/perl
use warnings;
use strict;
use feature qw(say);
use XML::LibXML;
my $x = XML::LibXML->load_xml(location => 'example.xml');
my $n = $x->find('//timedate')->shift;
say $n->nodePath;
答案 2 :(得分:0)
CPAN有一个工具xpathify,它本身就是HTML::Untemplate包的一部分: