Chcę manipulować dokumentem xml mającym domyślny obszar nazw, ale bez prefiksu. Czy istnieje sposób użycia xpath bez przestrzeni nazw uri tak, jakby nie było przestrzeni nazw?
Wierzę, że powinno być możliwe, jeśli ustawimy właściwość namesPaceAware właściwości documentBuilderFactory na wartość false. Ale w moim przypadku to nie działa.
Czy moje zrozumienie jest nieprawidłowe lub robię jakiś błąd w kodzie?Jak używać XPath na dokumentach xml z domyślną przestrzenią nazw
Oto mój kod:
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();
}
Oto mój xml:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://www.mydomain.com/schema">
<author>
<book title="t1"/>
<book title="t2"/>
</author>
</root>
to wygląda na ten sam problem Default XML namespace, JDOM, and XPath – belwood