使用xpath的多个值总和

时间:2018-03-19 18:03:14

标签: java xml dom xpath

我的输入是一个xpath,指向一个具有我要求和的值的节点。

XPathExpression expr = xpath.compile("XML/Cat/Item/Cost");
NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);

<XML>
  <Cat>   
    <Item>
        <Cost>12</Cost>
    </Item>    
    <Item>
        <Cost>10</Cost>
    </Item>    
  </Cat>
  <Cat>   
    <Item>
        <Cost>4</Cost>
    </Item>    
    <Item>
        <Cost>3.2</Cost>
    </Item>    
    <Item>
        <Cost>8.2</Cost>
    </Item> 
  </Cat>
</XML>

NodeList包含我可以求和的所有值,但我想按<cat>部分求和 12 + 10

4 + 3.2 + 8.2

可以使用dom和xpath实现吗?

1 个答案:

答案 0 :(得分:-1)

XPath只返回从它选择的文档中获取的原子值(数字,布尔值或字符串)或节点集。

这里你想要的不是一个原子价值(你想要几个总和,而不是一个)。并且它不是XML文档中已经存在的东西(XML文档不包含总和)。

所以不,只使用XPath是不可能的。

您需要遍历所有<Cat>个元素,并且每个元素都使用XPath表达式计算总和。