【问题标题】:XPath to select all nodes that have text in them that is different to the text in their child nodesXPath 选择其中包含与其子节点中的文本不同的文本的所有节点
【发布时间】:2020-02-11 11:00:20
【问题描述】:

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

假设有一个 h1 标签,其中包含一个 span。如果像这样,我根本不想捕获 H1 标签:

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

我只想赶上跨度。

如果是的话

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

我需要单独捕获它们。所以 H1 文本只会是 World,而 span 文本会是 Hello。

到目前为止我已经尝试过

//*[normalize-space()] 但这得到了所有不是预期结果的元素。

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

【问题讨论】:

    标签: php html xpath webdriver


    【解决方案1】:

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

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

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

    ?

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

    //*[text()]
    

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

    分别

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-02
        • 2012-06-24
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-15
        相关资源
        最近更新 更多