Analisi xml con spazi dei nomi diversi che utilizzano XPath in JAVA

Sto facendo questo piccolo progetto e il mio compito era quello di leggere un file xml e analizzarlo in modo che possa essere memorizzato in una class. Ecco l’esempio xml. è scritto in SOAP e quello che voglio fare è ottenere

 

questa parte ha analizzato e i nodes figlio in modo che possa creare una class che abbia ‘nodeName’ come attributo con valore ‘getNewTokenResponse’. + chiave di sessione

       {{session.key}}     

Ma il mio vero problema è che ho trovato molti buoni codici di esempio, gli spazi dei nomi non sono prefissati e la struttura del file xml può variare. Quindi qui sono confuso per raggiungere l’objective. Apprezzerò qualsiasi consiglio. Saluti: D

Per fare una query XPath con namespace in Java, credo che sia necessario fare qualcosa del genere:

 XPath xpath = XPathFactory.newInstance().newXPath(); xpath.setNamespaceContext(new NamespaceContext() { @Override public String getNamespaceURI(String prefix) { switch (prefix) { case "env": return "http://schemas.xmlsoap.org/soap/envelope/"; case "ns2": return "http://abc.examples.com/"; } return XMLConstants.NULL_NS_URI; } @Override public String getPrefix(String namespaceURI) { throw new UnsupportedOperationException("Not supported yet."); } @Override public Iterator getPrefixes(String namespaceURI) { throw new UnsupportedOperationException("Not supported yet."); } }); Node getNewTokenResp = (Node) xpath.evaluate("/env:Envelope/env:Body/ns2:getNewTokenResponse", document, XPathConstants.NODE); 

Devi anche chiamare .setNamespaceAware(true); su DocumentBuilderFactory prima di creare DocumentBuilder per analizzare il documento.