java中的XPath不接受表达式中的变量

时间:2010-07-07 21:37:37

标签: java xpath

有人能够善意地解释我为什么会这样做     xPath.evaluate(“/ MEMBER_LIST / MEMBER [1] / ADDRESS”,nodeMemberList,XPathConstants.STRING) 返回我正在寻找的值以及原因     xPath.evaluate(“/ MEMBER_LIST / MEMBER [”+ i +“] / ADDRESS”,nodeMemberList,XPathConstants.STRING) 返回一个空字符串? 我必须在for循环中执行这些操作,因此“i”是表示当前条目的int。

2 个答案:

答案 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开始。