【问题标题】:Selecting all the text except the last node using XPath使用 XPath 选择除最后一个节点之外的所有文本
【发布时间】:2014-06-05 08:12:50
【问题描述】:

是否有任何 XPath 模式可以选择除最后一个节点之外的所有 html 代码? 例如,假设我想要正文中的所有段落,除了this HTML code 中的最后一个段落: 我尝试了这些在表达式中返回空值或错误的模式(我正在使用 HAP Testbed v1.1.0.0 来测试 HTML 代码上的模式):

  • //body//p[last()] != true
  • not(//body//p[last()])
  • //body//not[p[last()]]
  • 等等...

问题:

  • not() 函数是否返回布尔值? - 如果没有,我该如何将其用于我的目的?
  • 除了最后一个节点之外,还有其他方法可以获取所有文本吗?

【问题讨论】:

    标签: html xpath


    【解决方案1】:

    如果您有一个路径表达式exp 选择一组节点,您可以使用(exp)[position() != last()] 选择节点集中除最后一个节点之外的所有节点。所以使用(//p)[position() != last()]。如果您不使用//p[position() != last()] 中的括号,您将选择/descendant-or-self::node()/p[position() != last()],这将选择所有p 元素,这些元素不是其各自父级中的最后一个p 子级。所以在

    的情况下
    <root>
      <div>
        <p>1</p>
        <p>2</p>
      </div>
      <div>
        <p>3</p>
        <p>4</p>
      </div>
    </root>
    

    该路径(//p)[position() != last()] 选择前三个p 元素,而//p[position() != last()] 将选择第一个和第三个p 元素。

    【讨论】:

      【解决方案2】:

      要获取除最后一个之外的所有p 标签并选择其文本,您可以使用

      //p[position()<last()]//text()
      

      not(...) 确实是 a function 在返回布尔值的条件中使用。

      【讨论】:

        猜你喜欢
        • 2019-01-19
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多