我想操作具有默認命名空間但沒有前綴的xml文檔。有沒有辦法使用沒有命名空間URI的xpath,就像沒有命名空間一樣?
我相信它應該是可能的,如果我們將documentBuilderFactory的namespaceAware屬性設置爲false。但在我的情況下,它不起作用。
我的理解是不正確的,或者我在代碼中犯了一些錯誤?如何在具有默認命名空間的xml文檔上使用XPath
這裏是我的代碼:
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>
依賴這看起來像同樣的問題 Default XML namespace, JDOM, and XPath – belwood 2010-10-15 05:16:54