带条件的xpath计数

时间:2014-02-27 18:53:27

标签: xml xpath count conditional-statements

我需要根据条件找到标签数量。

<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的专家,任何帮助都会受到赞赏。

1 个答案:

答案 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个,那么它们也会被计算在内。如果没有区别,就像你的情况一样,编写完整路径会更有效率。