我有一个NodeList,我想
2.如果列表等于1
,则打印节点的内容 my @dbRefs = $context->findnodes('.//u:dbReference[@type="EC"]/@id', $entry);
if(@dbRefs == 1){
print @dbRefs->get_node(1), "\n";
}
答案 0 :(得分:1)
@nodes = $node->findnodes( $xpath_expression );
findnodes
计算当前节点上的xpath表达式(XPath 1.0),并将结果节点集作为数组返回。在标量上下文中,返回XML::LibXML::NodeList
对象。
由于你只是拉一个数组,要获得第一个元素只需使用$dbRefs[0]
my @dbRefs = $context->findnodes('.//u:dbReference[@type="EC"]/@id', $entry);
if (@dbRefs == 1){
print $dbRefs[0], "\n";
}
答案 1 :(得分:0)
findnodes
方法返回 列表上下文中的节点对象列表,这就是你拥有它的方式,或单个XML::LibXML::NodeList
标量上下文中的对象。
您处理结果的方式取决于您拥有的价值。
在列表上下文中,您可以编写
my @dbRefs = $context->findnodes('.//u:dbReference[@type="EC"]/@id', $entry);
if (@dbRefs == 1) {
print $dbRefs[0], "\n";
}
或使用标量上下文
my $dbRefs = $context->findnodes('.//u:dbReference[@type="EC"]/@id', $entry);
if ($dbRefs->size == 1) {
print $dbRefs->get_node(1), "\n";
}