gpt4 book ai didi

xpath - 谓词 : how is the expression nodeName ='text' evaluated?

转载 作者:行者123 更新时间:2023-12-03 16:08:55 25 4
gpt4 key购买 nike

在这个 xpath 中:

/A/B[C='hello']

C="hello" C[text()='hello'] 的某种语法快捷方式?它在任何地方都有记录吗?

编辑:好的,我发现了一个区别: C=返回 C 和 C 的子节点中的所有文本节点,而 C[text()=仅返回 C 中的文本节点。

现在,假设我有 XML:
<root>

<A>
<B>
<C>hello<E>EEE</E>world</C>
<D>world</D>
</B>

<B>
<C>goodbye</C>
<D>mars</D>
</B>
</A>

</root>

如何使用语法 C[text()= 选择包含第一个 C 节点的 B 节点?我可以使用 C= 获取 B 节点像这样的语法:
/root/A/B[C="helloEEEworld"]

但这不起作用:
/root/A/B[C[text()="helloworld"]]

这些也不行:
/root/A/B[C[text()="hello world"]]
/root/A/B[C[text()="helloEEEworld"]]

嗯......这有效:
/root/A/B[C[text()="hello"]]

这是为什么?是否 text()只返回第一个文本节点?根据 W3C, text()返回上下文节点的所有文本节点子节点。

最佳答案

text()真正返回所有文本节点子节点作为节点列表

当您使用 /root/A/B[C[text()="hello"]]你的意思是获取 B具有 C 的节点 child 任何直接子节点等于 "hello" .

以同样的方式,您可以通过以下方式匹配它:

/root/A/B[C[text()="world"]]

或明确指定要获取节点 通过确切的第一个或第二个直接子文本节点 :
/root/A/B[C[text()[1]="hello"]]
/root/A/B[C[text()[2]="world"]]

如果您想通过其完整的文本内容匹配所需的节点,您可以使用
/root/A/B[C[.="helloEEEworld"]]

或者
/root/A/B[C="helloEEEworld"]

关于xpath - 谓词 : how is the expression nodeName ='text' evaluated?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48380115/

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