Как получить значение в XML с помощью Java? - PullRequest
0 голосов
/ 14 ноября 2011

Я пытался много раз, но я не знал, как извлечь значение из XML с помощью Java.Я пытался использовать DOM и Xpath.Пожалуйста помоги.Я могу использовать String Writer для распечатки XML, так что я знаю, что XML не пустой.

Document doc = parseXML(connection.getInputStream());

doc.getDocumentElement().normalize();
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());

XPath xPath = XPathFactory.newInstance().newXPath();
XPathExpression expr = xPath.compile("/xml_api_reply/weather/current_conditions/temp_f/text()");


Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
    System.out.println(nodes.item(i).getNodeValue()); 
}

Содержимое XML:

<xml_api_reply version="1">
  <weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0">
    <current_conditions>
        <condition data="Clear"/>
        <temp_f data="49"/>
        <temp_c data="9"/>
    </current_conditions>
  </weather>
</xml_api_reply>

Кажется, что оно не вошлов цикл for, потому что nodes равно нулю.

Ответы [ 2 ]

4 голосов
/ 14 ноября 2011

Ваше выражение XPath оценивается как (несуществующие) текстовые узлы под temp_f.Тем не менее, вам нужно значение атрибута данных:

/xml_api_reply/weather/current_conditions/temp_f/@data

может помочь.

0 голосов
/ 14 ноября 2011

Вы пробовали эту реализацию?

http://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/

...