繁体   English   中英

XPath 选择所有节点中的文本与其子节点中的文本不同

[英]XPath to select all nodes that have text in them that is different to the text in their child nodes

选择该节点中的文本与其子节点不同的所有节点的最佳方法是什么。

因此,假设有一个带有跨度的 h1 标签。 如果像这样,我根本不想捕获 H1 标签:

<h1><span>hello</span></h1>

我只想抓住跨度。

如果它是

<h1><span>Hello</span> World</h1>

我需要分别捕获它们。 因此 H1 文本将仅为 World 而跨度文本将是 Hello。

到目前为止我已经尝试过

//*[normalize-space()]但这会获取所有不是所需结果的元素。

是否有可能使每个元素都成为孤儿,这样 html 就变成了一个 0 根文档,其中每个节点都在自己的节点中并且没有父节点?

你的问题不完全清楚:你想做什么

<p><b>Hello</b><i>World</i></p>

<p><b>Hello</b> <i>World</i></p>

?

但我认为您本质上是在寻找具有文本节点子节点(或者可能是非空白文本节点子节点)的元素,这些元素将是

//*[text()]

或者

//*[text()[normalize-space()]

分别

如果我正确理解了这个问题,这个 xpath 表达式

//self::node()/text()

应该分别输出HelloWorld 在您的实际代码上尝试一下,看看它是否有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM