Я хочу проверить, что XML имеет ожидаемое значение узла. Но я не могу получить нужный мне узел. Пожалуйста, помогите мне)
Вот мой XML. Я хочу получить значение этого узла ns3: site
<soap-env:envelope xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap-env:body>
<ns4:findsiteconfigurationbysmth xmlns:ns3="http://www.testsite.com/common" xmlns:ns2="http://www.testsite.com/plant" xmlns:ns4="someapi:com:plant" xmlns:ns5="someapi:com:reasoncode">
<ns4:response>
<ns2:ref>SiteWD:QWERTY</ns2:ref>
<ns3:site>QWERTY</ns3:site>
<ns3:description>test description</ns3:description>
<ns3:timezone>Africa/Abidjan</ns3:timezone>
</ns4:response>
</ns4:findsiteconfigurationbysmth>
</soap-env:body>
</soap-env:envelope>
Я знаю, что как-то мне приходится работать с пространствами имен. Я продал их на мой код ниже. Это мне не помогло.
Я пробовал этот подход
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document myXml = builder.parse(new File(PATH_TO_XML));
NodeList node = myXml.getDocumentElement().getElementsByTagNameNS("http://www.testsite.com/common", "ns3");
node.item(0);
В этом случае мой результат null .
Каким-то образом я получил все текстовые значения узлов с ns3 пространствами имен в одной строке. Это было так
SiteBO:15EBDS15EBDSAutomation testAfrica/Abidjan
Но я не могу воспроизвести подход, который я использовал. Хотя это не то, что я ищу)
Пожалуйста, помогите мне выяснить, в чем проблема. Почему я не могу получить точное значение узла? Что я должен изменить?