gpt4 book ai didi

xml - XML XPath 1.0-如何在XPath表达式中正确使用'not'函数

转载 作者:行者123 更新时间:2023-12-03 17:14:57 24 4
gpt4 key购买 nike

我只想返回不包含BB子节点的AA节点。我正在使用XPath 1.0 btw。

样本xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<T>
<AA>
<ZZ>z</ZZ>
</AA>
<AA>
<BB>b1</BB>
</AA>
<AA>
<BB>b2</BB>
<CC>c</CC>
</AA>
<AA>
<CC>c</CC>
<DD>d</DD>
</AA>
</T>


因此,通过以上示例,仅应返回第一个和最后一个AA节点。
我已经尝试过类似的方法:

// AA / * [not(BB)] / ..

...但是这仍然会返回所有4个AA节点。

1.0中是否提供“不”功能?
如果是这样,我在做什么错?谢谢...

最佳答案

您的表达式选择的节点是不具有AABB节点的子节点。如果对AA节点进行断言,则应该得到所需的内容:

use strict;
use warnings;

use XML::XPath;

my $xp = XML::XPath->new( filename => 'test.xml');

my $nodeset = $xp->find('//AA[not(BB)]');

foreach my $node ($nodeset->get_nodelist) {
print "FOUND:\n";
print ' ', $node->toString, "\n";
}


哪个输出:

FOUND:
<AA>
<ZZ>z</ZZ>
</AA>
FOUND:
<AA>
<CC>c</CC>
<DD>d</DD>
</AA>

关于xml - XML XPath 1.0-如何在XPath表达式中正确使用'not'函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21769436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com