如何使用xpath获取所有帐户的名称? 以下表达式仅返回第一个帐户名称:
XPathExpression fax = xpath.compile("/accounts/account/name")
<accounts>
<account>
<name>Johndoe1<name>
<account>
<account>
<name>Johndoe2<name>
<account>
</account>
答案 0 :(得分:4)
根据本教程:http://www.ibm.com/developerworks/library/x-javaxpathapi/index.html您需要执行以下操作:
XPathExpression fax = xpath.compile("/accounts/account/name")
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
System.out.println(nodes.item(i).getNodeValue());
}
答案 1 :(得分:1)
这是正确的XPath表达式,但得到的结果取决于您如何评估它。 XPath表达式/accounts/account/name
返回节点集,其中包含(按文档顺序)name
下所有account
元素的所有accounts
子元素文档中的根元素。
在XPath数据模型中,节点集的字符串值被定义为集合中第一个节点的字符串值。因此,如果您使用单参数evaluate
:
fax.evaluate(someDocument)
这会将表达式计算为字符串,您将获得第一个name
值。相反,您需要将表达式评估为节点集,然后按koopajah's answer中的建议依次提取每个节点的字符串值。
答案 2 :(得分:0)
尝试使用帐号//帐户,这将为您提供文档中所有后代为“帐户”的帐户标记