【问题标题】:How to get H1,H2,H3,... using a single xpath expression如何使用单个 xpath 表达式获取 H1、H2、H3、...
【发布时间】:2011-11-03 09:38:32
【问题描述】:

如何在一个 xpath 表达式中获取 H1、H2、H3 内容?

我知道我能做到。

//html/body/h1/text()
//html/body/h2/text()
//html/body/h3/text() 

等等。

【问题讨论】:

    标签: xpath


    【解决方案1】:

    使用

    /html/body/*[self::h1 or self::h2 or self::h3]/text()
    

    以下表达式不正确

    //html/body/*[local-name() = "h1"  
               or local-name() = "h2"  
               or local-name() = "h3"]/text()  
    

    因为它可能会选择属于unwanted:h1different:h2someWeirdNamespace:h3 子级的文本节点。

    另一个建议:当 XML 文档的结构静态已知时,请始终避免使用 //。使用// 通常会导致效率显着降低,因为它会导致遍历上下文节点中的完整文档(子)树。

    【讨论】:

    • 关于性能问题,您的里程可能会有所不同。一些产品竭尽全力使用 //x 优化查询。
    • 我想获取 p 标签内的文本。 h 标签可以是 h3 或 h4 或 h5

      成分:

      番茄泥、酸度调节剂(柠檬酸)

      xpath.??提前致谢
    • @AswinSathyan,请在 SO 提出一个单独的问题。
    • 太棒了!我需要在正文下使用后代选择器来获取所有标题:/html/body//*[self::h1 or self::h2 or self::h3]/text()
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签