To XML wejściowe:Nie można odczytać XML z użyciem przedrostka przestrzeni nazw DOM parser
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns2:SendResponse xmlns:ns2="http://mycompany.com/schema/">
<ns2:SendResult>
<ns2:Token>A00179-02</ns2:Token>
</ns2:SendResult>
</ns2:SendResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
ten kod, który używam do zapoznania się z XML (Variable xmlString zawiera XML powyżej):
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xmlString));
Document doc = db.parse(is);
System.out.println("Element :" + doc.getElementsByTagName("Token").item(0));
System.out.println("Element :" + doc.getElementsByTagName("ns2:Token").item(0));
wyjściowa:
Element :null
Element :[ns2:Token: null]
jestem w stanie odczytać element, jeśli mogę użyć „NS2: Token” jako nazwę znacznika, ale nie chcę używać th Prefiks e w moim kodzie, ponieważ nie jestem pewien, czy to będzie to samo, czy zmiana w przyszłości. Czy jest jakiś sposób, aby odczytać element xml bez twardego kodowania przestrzeni nazw w nazwie znacznika?
Może hack, ale rozwiązuje mój problem jak urok :) – Tarmo