【问题标题】:Counting special text of children in xpath在 xpath 中计算子项的特殊文本
【发布时间】:2012-01-08 02:11:32
【问题描述】:

我有这个 xml 文档:

    <AAA> 
      <CCC> 
           <BBB>SALAM</BBB>
           <BBB>HALET KHUBE</BBB> 
           <BBB>HEY</BBB> 
           <TTT>SALAM</TTT>
           <GGG/>
           <ZZZ/>
      </CCC> 
      <DDD> 
           <BBB>GOOD</BBB> 
           <BBB>BOOO</BBB> 
           <GGG/>
           <GGG/>
           <ZZZ/>
      </DDD> 
      <EEE> 
           <CCC>TAKE</CCC> 
           <DDD>LEAVE</DDD>
           <ZZZ/>
           <ZZZ/>
           <ZZZ/> 
      </EEE> 
 </AAA>

我想选择有 2 个子节点,文本 = "SALAM"(该节点可以有任意数量的子节点,但它必须有 2 个子节点,文本 = "SALAM")。例如在上面的 xml 中,xpath 查询必须返回 CCC 标签。 请帮我。 谢谢

【问题讨论】:

    标签: xml xpath xpath-2.0


    【解决方案1】:

    使用

    /*/*[count(*[text() = 'SALAM']) = 2 ]
    

    使用以下方法可能更有效

    /*/*
      [*[text() = 'SALAM'][2]
     and
       not([*[text() = 'SALAM'][3])
      ]
    

    尽可能尽量避免使用// 伪运算符,因为在许多情况下它可能非常慢。

    【讨论】:

      【解决方案2】:

      使用count() xpath 函数:

      //*[count(./*[text()="SALAM"])=2]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-08
        • 2016-12-21
        • 1970-01-01
        • 2011-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多