有人能够善意地解释我为什么会这样做 xPath.evaluate(“/ MEMBER_LIST / MEMBER [1] / ADDRESS”,nodeMemberList,XPathConstants.STRING) 返回我正在寻找的值以及原因 xPath.evaluate(“/ MEMBER_LIST / MEMBER [”+ i +“] / ADDRESS”,nodeMemberList,XPathConstants.STRING) 返回一个空字符串? 我必须在for循环中执行这些操作,因此“i”是表示当前条目的int。
答案 0 :(得分:1)
你的for循环从1开始吗?表达式/MEMBER_LIST/MEMBER[0]
不是有效的XPath表达式,因为XPath索引从1开始。此外,访问超过节点总数的索引也是无效的。例如,当只有3个/MEMBER_LIST/MEMBER[5]
元素时执行MEMBER
。
您还可以使用XPathConstants.NODESET常量。这将返回与给定表达式匹配的所有元素的列表。然后,您可以遍历列表。
NodeList nodeList = (NodeList)xPath.evaluate("/MEMBER_LIST/MEMBER/ADDRESS", nodeMemberList, XPathConstants.NODESET);
for (int i = 0; i < nodeList.getLength(); ++i){
Node node = nodeList.item(i);
String address = node.getTextContent();
}
答案 1 :(得分:0)
如果i==0
,则答案将为空,因为XPath索引从1开始。