我已经看过很多关于 Java/XPath 和 Namepsaces 主题的讨论,但我不确定这些问题的答案是否有助于解决我的特定问题。
我有一个获取一些 XML 的程序 - 我不知道预先的格式,但它可能包含名称空间。用户可以提供用于从 XML 中提取特定数据的 xpath 表达式。代码是通用的——我不能在任何命名空间或类似的东西中编译,因为我不知道预先 XML 的格式。
所以 XML 可能看起来像这样:
<ns1:item id='myroot' xmlns:ns1='http://www.myplace.com/place'>
<ns1:category id='cat1'>
<ns1:item id='item1'>
<ns1:category id='cat2'></ns1:category>
</ns1:item>
</ns1:category>
</ns1:item>
用户输入的 xpath 可能是:
/ns1:item[@id='myroot']/ns1:category[@id='cat1']
但是使用以下代码,我总是什么也得不到(无论我尝试什么 XPath):
public static String evaluate(String xml, String xpathExpression) throws Exception
{
String result = "";
InputSource is = new InputSource(new StringReader(xml));
XPath xPath = XPathFactory.newInstance().newXPath();
result = xPath.evaluate(xpathExpression, is);
System.out.println("result=" +result);
}
非常感谢任何帮助。
谢谢