Dato il seguente XML (esempio):Individuazione elemento XML in qualsiasi parte del documento con Java
<?xml version="1.0" encoding="UTF-8"?>
<rsb:VersionInfo xmlns:atom="http://www.w3.org/2005/Atom" xmlns:rsb="http://ws.rsb.de/v2">
<rsb:Variant>Windows</rsb:Variant>
<rsb:Version>10</rsb:Version>
</rsb:VersionInfo>
ho bisogno di ottenere i valori di Variant
e Version
. Il mio approccio attuale sta usando XPath perché non posso contare sulla struttura data. Tutto quello che so è che c'è un elemento rsb:Version
da qualche parte nel documento.
XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "//Variant";
InputSource inputSource = new InputSource("test.xml");
String result = (String) xpath.evaluate(expression, inputSource, XPathConstants.STRING);
System.out.println(result);
Questo tuttavia non produce nulla. Ho provato le seguenti espressioni XPath:
- // Variante
- // Variante/text()
- // RSB: Variante
- // RSB: Variante/text()
Qual è l'espressione XPath corretta? O c'è un modo ancora più semplice per arrivare a questo elemento?
XPathFactory deve essere creato con un NamespaceContext. Una volta capito, l'XPath "• // rsb: Variant' dovrebbe funzionare. – JerryM
si prega di vedere anche questa domanda. https://stackoverflow.com/questions/2811001/how-to-read-xml-using-xpath-in-java –
Il commento di @JerryM risolve la mia domanda. –