2017-10-14 45 views
1

我解析XML並使用XPath想評估summ。XPathExpression不能總和

我嘗試:

long resultSum = 0L; 
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
factory.setNamespaceAware(false); 
DocumentBuilder builder = factory.newDocumentBuilder(); 
Document doc = builder.parse(getOutputFileName()); 
XPathFactory xPathFactory = XPathFactory.newInstance(); 
XPath xPath = xPathFactory.newXPath(); 
String xPathExpression = "sum(//entries//entry/@field)"; 
XPathExpression expr = xPath.compile(xPathExpression); 
resultSum = (Long) expr.evaluate(doc, XPathConstants.NUMBER); 

但是,I'have錯誤:

Exception in thread "main" java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Long 

在這一行:

resultSum = (Long) expr.evaluate(doc, XPathConstants.NUMBER); 

這究竟是爲什麼?

回答

2

XPathConstants.NUMBER計算結果爲Double,以它的結果分配給一個Long你需要做這樣的事情:

resultSum = ((Double) expr.evaluate(doc, XPathConstants.NUMBER)).longValue();