【发布时间】:2011-04-25 18:35:51
【问题描述】:
我想操作具有默认命名空间但没有前缀的 xml 文档。有没有办法在没有命名空间 uri 的情况下使用 xpath,就像没有命名空间一样?
我相信如果我们将 documentBuilderFactory 的 namespaceAware 属性设置为 false 应该是可能的。但就我而言,它不起作用。
是我的理解不正确还是我在代码中犯了一些错误?
这是我的代码:
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(false);
try {
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document dDoc = builder.parse("E:/test.xml");
XPath xPath = XPathFactory.newInstance().newXPath();
NodeList nl = (NodeList) xPath.evaluate("//author", dDoc, XPathConstants.NODESET);
System.out.println(nl.getLength());
} catch (Exception e) {
e.printStackTrace();
}
这是我的 xml:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://www.mydomain.com/schema">
<author>
<book title="t1"/>
<book title="t2"/>
</author>
</root>
【问题讨论】:
-
这看起来是同一个问题stackoverflow.com/questions/543049/… XML namespace, JDOM, and XPath