Я хочу манипулировать XML-документом, имеющим пространство имен по умолчанию, но без префикса. Есть ли способ использовать xpath без пространства имен uri так же, как если бы не было пространства имен?
Я считаю, что это должно быть возможно, если мы установим для свойства namespaceAware documentBuilderFactory значение 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>