2011-11-14 3 views
0

私は何度も試してみましたが、Javaを使用してXMLから値を取得する方法はありませんでした。私はDOMとXpathを使ってみました。助けてください。私はXMLが空ではないことを知っているので、XMLをプリントアウトするためにストリングライターを使用することができます。Javaを使用して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> 

nodesがヌルであるので、それはループのために行かなかったようです。

+0

DOMの周りでタスクを実行するための簡単なヘルパークラスを作成できます。これを参照してくださいhttp://stackoverflow.com/a/8346867/851432 – Jomoos

答えて

4

XPath式は、temp_fの下の(存在しない)テキストノードに評価されます。ただし、データ属性の値が必要です。

/xml_api_reply/weather/current_conditions/temp_f/@data 

トリックを行う可能性があります。

+0

素晴らしい、ありがとう –

関連する問題