INPUT_ XML:
<?xml version="1.0" encoding="UTF-8">
<root xmlns:ns1="http://path1/schema1" xmlns:ns2="http://path2/schema2">
<ns1:abc>1234</ns1:abc>
<ns2:def>5678</ns2:def>
</root>
В Java я пытаюсь написать выражение XPath, которое получит значение, соответствующее этому атрибуту "xmlns: ns1", из указанного выше INPUT_ XML содержимое строки.
Я пробовал следующее:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(INPUT_XML);
String xpathExpression = "/root/xmlns:ns1";
// Create XPathFactory object
XPathFactory xpathFactory = XPathFactory.newInstance();
// Create XPath object
XPath xpath = xpathFactory.newXPath();
// Create XPathExpression object
XPathExpression expr = xpath.compile(xpathExpression);
// Evaluate expression result on XML document
NodeList nodes = (NodeList) expr.evaluate(document, XPathConstants.NODESET);
for (int i = 0; i < nodes.getLength(); i++) {
System.out.println(nodes.item(i).getNodeValue());
}
Но приведенный выше код не дает ожидаемое значение указанного атрибута, т.е. xmlns: ns1 . Я сильно подозреваю, что xPathExpression неправильно. Пожалуйста, предложите правильное выражение XPath или правильный подход к решению этой проблемы.