我有这个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个子项的节点,其中text =“SALAM”(该节点可以有任意数量的子节点,但它必须有2个带有text =“SALAM”的子节点。)例如在上面的xml中,xpath查询必须返回CCC标签。 请帮我。 感谢
答案 0 :(得分:1)
使用count()
xpath函数:
//*[count(./*[text()="SALAM"])=2]
答案 1 :(得分:1)
使用强>:
/*/*[count(*[text() = 'SALAM']) = 2 ]
使用以下:
可能更有效/*/*
[*[text() = 'SALAM'][2]
and
not([*[text() = 'SALAM'][3])
]
尽可能尝试避免使用//
伪操作符,因为在很多情况下它可能会非常慢。