![](/img/trans.png)
[英]XPATH select all descendant text nodes in the order they appear excluding some of them
[英]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()
应该分别输出Hello
和World
。 在您的实际代码上尝试一下,看看它是否有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.