Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用xpath获取对象列表中的所有值?_Java_Xml_Xpath - Fatal编程技术网

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

Java 如何使用xpath获取对象列表中的所有值?,java,xml,xpath,Java,Xml,Xpath,如何使用xpath获取所有帐户的名称? 以下表达式仅返回第一个帐户名称: XPathExpression fax = xpath.compile("/accounts/account/name") <accounts> <account> <name>Johndoe1<name> <account> <account> <name>Johndoe2<name> <account> <

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

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

<accounts>
<account>
<name>Johndoe1<name>
<account>
<account>
<name>Johndoe2<name>
<account>
</account>
XPathExpression fax=xpath.compile(“/accounts/account/name”)
约翰多尔
约翰多2

根据本教程:您需要执行以下操作:

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()); 
}
XPathExpression fax=xpath.compile(“/accounts/account/name”)
Object result=expr.evaluate(doc,XPathConstants.NODESET);
节点列表节点=(节点列表)结果;
对于(int i=0;i
尝试使用accounts//account,这将为您提供文档中的所有account标记,谁的后代是“accounts”

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

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

fax.evaluate(someDocument)

这将以字符串的形式计算表达式,您将只获得第一个
名称
值。相反,您需要将表达式作为节点集求值,然后依次提取每个节点的字符串值,如中所建议。

在[here][1]中提出了相同的问题!看一看![1]: