我有这个 XML 实例文档:
<entities>
<person>James</person>
<person>Jack</person>
<person>Jim</person>
</entities>
并使用以下代码遍历人员节点并打印它们的名称:
XPathExpression expr = xpath.compile("/entities/person");
NodeList nodes = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
for (int i = 0 ; i < nodes.getLength() ; i++) {
Node node = nodes.item(i);
String nodeName = node.getNodeName();
String name = xpath.compile("text()").evaluate(node).trim();
System.out.printf("node type = %s, node name = %s\n", nodeName, name);
}
现在我想要的是也可以访问每个节点的索引。
我知道我可以很容易地从i
循环变量中获取它,但我想将它作为XPath表达式获取,最好以与获取text()
XPath表达式的值相同的方式获取。
我的用例是我试图将收集的所有属性作为XPath表达式(我在运行时从配置文件加载)处理,以便最小化非通用代码,所以我不想处理索引作为特例。