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.