我需要根据条件找到标签数量。
<A>
<B><C>99</C></B>
<B><C>96</C></B>
<B><C>98</C></B>
<B><C>95</C></B>
<B><C>99</C></B>
</A>
我到目前为止
count(//*A/B/C/[text() = '99' | text() = '98'])
预期输出为3
我不是xpath的专家,任何帮助都会受到赞赏。
答案 0 :(得分:1)
试试这样:
count(/A/B/C[text() = '99' or text() = '98'])
*
表示任何元素。它适用于/*/B
,因为A
是一个元素。 []
表示限制其应用的节点的谓词。由于它适用于C
,因此不要在C
和谓词之间使用任何路径分隔符。 //
表示后代或自我。由于您的root是A
,因此如果您使用//
或/
,则无效。如果您不关心上下文并且只想计算文档中的所有C
,请独立于树中的位置,您也可以使用:
count(//C[text() = '99' or text() = '98'])
如果文档的其他部分中有C
个,那么它们也会被计算在内。如果没有区别,就像你的情况一样,编写完整路径会更有效率。