gpt4 book ai didi

.net - 查找没有任何文本节点的所有节点

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

使用XPath(.NET),我试图选择不包含任何文本节点的所有节点。

鉴于此文件:

<root>
<node1>
<node1a>Node 1A</node1a>
</node1>
<node2>Node 2</node2>
<node3>
<node3a>Node 3A</node3a>
<node3b></node3b>
</node3>
<node4></node4>
<node5>
<node5A></node5A>
</node5>
</root>


我想获得节点:

<node3b></node3b>

<node4></node4>

<node5>
<node5A></node5A>
</node5>


请注意,重叠的子树是合并的,因此不应单独返回node5A。

我希望这能解决问题,但是由于某些原因(当有人指出时,这很明显)并没有:

//*[count(//text()) = 0]


注意:我正在使用 XPath tester尝试一下。

最佳答案

假设您的结果示例确实是您想要的(并不完全符合标题中的说明),则上面的建议

//*[count(.//text()) = 0]


或首选方式

//*[not(.//text())]


不起作用,因为结果不是您所期望的

<node3b />
<node4 />
<node5>
<node5A />
</node5>
<node5A /> <!-- this node is not present in your example -->


如果您想要的是所有子树,而没有其他文本子节点不包含在其他结果子树中,那么解决方案就是这个

//*[not(.//text())][not(ancestor::*[not(.//text())])]


第二个谓词从结果中删除所有已经包含至少一个祖先的节点

关于.net - 查找没有任何文本节点的所有节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18438465/

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