【发布时间】:2018-12-04 10:58:12
【问题描述】:
我有一个 XML 文件,它只有一个名为 import 的节点。我想找到导入的 href 属性。我尝试使用 findnodes(),但它返回一个列表,我必须进一步搜索,所以我希望有一种方法可以找到一个只出现一次的特定节点。 我尝试了 getChildrenByTagName 但这给出了错误
Can't locate object method "getChildrenByTagName" via package "XML::LibXML::Document"
我也尝试了 grep,它给出了类似的错误
Can't locate object method "grep" via package "XML::LibXML::Document"
我的 XML 文件是:
<?xml version="1.0" encoding="UTF-8"?>
<resource name="data" type="application/dictionary+xml">
<schema>
<import href="tobefound.xml"/>
</schema>
</resource>
到目前为止我的代码是
#!/usr/bin/perl
use warnings;
use strict;
use XML::LibXML;
my $name = $ARGV[1];
my $dom = XML::LibXML->load_xml(location => $name);
my @node= $dom->findnodes('//import');
print "List: @node\n";
请告诉我是否有一种方法可以只找到一个特定节点而无需遍历整个 dom 并且不必将其存储为列表。谢谢。
【问题讨论】:
-
如果你知道它只有一个节点,那么就取
@node的第一个元素? -
@tinita 不会不必要地使用列表吗?我能以某种方式找到
import的第一次出现吗?
标签: xml perl xml-parsing libxml2 xml-libxml