繁体   English   中英

如何使用xpath获取对象列表中的所有值?

[英]How to get all values in a list of objects with xpath?

如何使用xpath获取所有帐户的名称? 以下表达式仅返回第一个帐户名称:

XPathExpression fax = xpath.compile("/accounts/account/name")

<accounts>
<account>
<name>Johndoe1<name>
<account>
<account>
<name>Johndoe2<name>
<account>
</account>

根据本教程: 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()); 
}

这是正确的XPath表达式,但您得到的结果取决于您如何评估它。 XPath表达式/accounts/account/name返回一个节点集 ,该节点集包含(按文档顺序)文档中accounts根元素下所有account元素的所有name子元素。

在XPath数据模型中,节点集的字符串值被定义为集合中第一个节点的字符串值。 因此,如果您使用单参数evaluate

fax.evaluate(someDocument)

这会将表达式计算为字符串,您只需获取name值。 相反,您需要将表达式计算为节点集 ,然后依次提取每个节点的字符串值,如koopajah的答案所示

尝试使用帐户//帐户,这将为您提供文档中所有后代是“帐户”的帐户标记

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM