2

我有这个 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标签。请帮我。谢谢

4

2 回答 2

1

使用count()xpath 函数:

//*[count(./*[text()="SALAM"])=2]
于 2012-01-07T17:45:09.893 回答
1

使用

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

使用以下方法可能更有效

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

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

于 2012-01-07T17:57:53.450 回答