我想操作具有默认命名空间但没有前缀的xml doc.有没有一种方法可以使用没有命名空间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();
}
Run Code Online (Sandbox Code Playgroud)
这是我的xml:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://www.mydomain.com/schema">
<author>
<book title="t1"/>
<book title="t2"/>
</author>
</root>
Run Code Online (Sandbox Code Playgroud)