2017-10-14 8 views
1

私はXMLを解析し、XPathを使用してsummを評価したいと思います。XPath式が数字の桁を合わせることができません

私は試してみてください。

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は、あなたがこのような何かをする必要がありますLongにその結果を割り当てるために、Doubleと評価されます

resultSum = ((Double) expr.evaluate(doc, XPathConstants.NUMBER)).longValue(); 
関連する問題