如果我有如下 XML 文档:
<foo>
<foo1>Foo Test 1</foo1>
<foo2>
<another1>
<test10>This is a duplicate</test10>
</another1>
</foo2>
<foo2>
<another1>
<test1>Foo Test 2</test1>
</another1>
</foo2>
<foo3>Foo Test 3</foo3>
<foo4>Foo Test 4</foo4>
</foo>
例如,我如何获得 XPath <test1>
?所以输出应该是这样的:foo/foo2[2]/another1/test1
我猜代码看起来像这样:
public String getXPath(Document document, String xmlTag) {
String xpath = "";
...
//Get the node from xmlTag
//Get the xpath using the node
return xpath;
}
比方说String XPathVar = getXPath(document, "<test1>");
。我需要取回一个可以在以下代码中工作的绝对 xpath:
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression xpr = xpath.compile(XPathVar);
xpr.evaluate(Document, XPathConstants.STRING);
但它不能像这样的捷径,//test1
因为它也将用于元数据目的。
通过以下方式打印结果时:
System.out.println(xpr.evaluate(Document, XPathConstants.STRING));
我应该得到节点的值。所以如果XPathVar = foo/foo2[2]/another1/test1
那时我应该回来:
Foo Test 2
并不是This is a duplicate