我有一个HTML页面,如:
<html>
<head><title>Hello</title></head>
<body>
<div id="foo">
<h6>9</h6>
<h6>3</h6>
<h6>5</h6>
</div>
</body>
</html>
我想使用XQuery(或xpath 2.0)对&lt; h6&gt;中的值求和。元素。我正在使用xmlbeans(以saxon作为引擎),我尝试了以下只给出了一个空指针异常;
XmlObject xml = XmlObject.Factory.parse(xmlFile);
XmlCursor htmlCursor = xml.newCursor();
XmlCursor result = htmlCursor.execQuery("sum(for $val in $this//h6 return number($val))");
System.out.println(result.getObject());
有什么想法吗?
答案 0 :(得分:1)
使用XPath Sum函数:
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xmlFile);
XPath path = XPathFactory.newInstance().newXPath();
System.out.println(path.evaluate("sum(//h6)", doc));
打印:
17
答案 1 :(得分:-1)
我在这里猜测,但查询中的$this
看起来有点奇怪。在标准XQuery中,名为$this
的范围中没有变量。我假设您需要上下文项,因此您的查询将如下所示:
sum(for $val in .//h6 return number($val))
或更简单:
sum(.//h6/number(.))
或只是:
sum(.//h6)
省略点意味着XPath从文档的根开始,而不是在上下文项中。