如何使用XPath计数表达式来计算if语句?

dja*_*fan 4 java xml xpath

我试图弄清楚如何使用Xpath表达式来验证XPath表达式中只有一个匹配的节点.这是一些示例XML:

<a>
  <b>
    <c>X:1 Y:0</c>
    <c>X:1 Y:0</c>
    <c>X:2 Y:0</c>
  </b>
  <b>
    <c>X:1 Y:0</c>
    <c>X:2 Y:0</c>
  </b>
</a>
Run Code Online (Sandbox Code Playgroud)

所以,我尝试了与此类似的代码,但它不起作用:

XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
try {           
    XPathExpression expr = xpath.compile( "count(//a/b/c)" ) );
} catch ( XPathExpressionException e ) {
    printErr( e );
}
if ( expr == true ) {
  // edit XML node
}
Run Code Online (Sandbox Code Playgroud)

应该有一种方法让count表达式返回一个Boolean = true.我怎么得到这个?

Ken*_*net 9

也许是这样的:

XPathExpression xpr = xpath.compile("count(//a/b/c)");
System.out.println(xpr.evaluate(n, XPathConstants.NUMBER));

xpr = xpath.compile("count(//a/b/c) = 5");
System.out.println(xpr.evaluate(n, XPathConstants.BOOLEAN));
Run Code Online (Sandbox Code Playgroud)

其中n是文档中的节点/元素

首先打印5.0,第二次打印为true