Ваше выражение XPath верное, в вашем коде есть, скорее всего, другая проблема. Вы действительно должны предоставить полный пример, который демонстрирует вашу проблему.
Следующий код демонстрирует, как это будет выглядеть следующим образом:
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
public class XmlTest {
public static void main(String[] args) throws Exception {
String xml = "<name>\n" +
"<value>123</value>\n" +
"<value>456</value>\n" +
"<value>789</value>\n" +
"</name>";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(xml)));
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
NodeList list = (NodeList) xpath.evaluate("name/value", doc, XPathConstants.NODESET);
for (int i = 0; i < list.getLength(); ++i) {
Node node = list.item(i);
System.out.println(node.getNodeName());
}
}
}
Запуск это результаты в следующие выходные:
value
value
value
Спасибо. Я хочу напечатать значения этих тегов. Я попытался с этим node.getNodeValue()); но получение нулевого значения –
В любом случае, мне удалось получить значения с помощью узла Node = list3.item (i); \t node.getFirstChild(). GetNodeValue(); –
@ serverliving.com Используйте 'имя/значение/текст()' для выражения XPath. – Markus