2011-04-26 76 views
0

我有我想用Java解析的響應結構。誰能幫我這個?在Java中解析XML

<message_response xmlns=""> 
     <action name="GETCIL"> 
     <param name="bookingNote" value="" require="" read-only=""><![CDATA[bookingNote]]></param> 
     <param name="CarrierLinkType" value="" require="" read-only=""><![CDATA[True]]></param> 
     <param name="Carrier" value="" require="" read-only=""><![CDATA[SK185]]></param> 

<param_list name="ViaAddressList" id="GETCIL"> 
     <value> 
     <param_list name="ViaAddressId" id="ViaAddressList"> 
      <value><![CDATA[877765050_5511]]></value> 
     </param_list> 
     <param_list name="AddressDate" id="ViaAddressList"> 
      <value><![CDATA[10/12/2010]]></value> 
     </param_list> 
     <param_list name="AddressTime" id="ViaAddressList"> 
      <value><![CDATA[12:12]]></value> 
     </param_list> 
     </value> 
    </param_list> 


</action> 
    </message_response> 
+3

在Java中解析XML的方法有**噸,並且在這裏有**噸的問題。爲了得到一個好的答案,你應該更加具體地討論**你想用XML來做什麼。將它轉換爲對象樹?提取幾個選定的值?將其轉換爲其他格式? – 2011-04-26 08:42:36

+0

是的,我想從XML中提取值。 – AndroidDev 2011-04-26 08:43:33

+0

投票重新打開,因爲xml在問題中,但不可見,因爲它沒有被格式化爲「代碼」。 – 2011-04-26 08:50:19

回答

1

爲什麼CDATA部分圍繞數據?

您可以使用SAX或DOM來解析XML。

也有庫包裝SAX和DOM解析器,使您的生活更輕鬆的常見任務。想到Java的兩個是JDOM和DOM4J。谷歌爲他們 - 有教程和例子可用,將告訴你你需要知道什麼。

+0

這是我接收數據的格式。請給我一些代碼來迭代。我是新來的 。謝謝。 – AndroidDev 2011-04-26 09:35:08

+0

不,你必須親自找到它。我在工作。 – duffymo 2011-04-26 11:52:31

3

從XML文檔(而不是解析使用SAX完整的文檔)中提取特定值的最簡單方法是使用XPath如下:

//1. load the document into memory. 
DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 

//2. Create an XPath. 
XPath xpath = XPathFactory.newInstance().newXPath(); 

//3. Evaluate the xpath expression. 
String actionName = xpath.evaluate("/message_response/action/@name", documentBuilder.parse(xmlFile)); 

有比XPath.evaluate不是更給它其他方法被重載,以便允許返回節點和節點列表(參見javax.xml.xpath.XPathConstants的類型)。

然後你只需要讀取xpath語法(http://www.w3schools.com/xpath/xpath_syntax.asp)。

+0

謝謝你。 – AndroidDev 2011-04-26 11:01:52

+0

謝謝你。的確非常有幫助。我看到/ message_response/action/param [11]給你列表中的第11個參數。你能幫我在嵌套無法找到任何示例。我已經更新了XML。非常感謝你 – AndroidDev 2011-04-26 11:30:10

+0

你可以這樣做:'NodeList viaAddressList =(NodeList)xpath.evaluate(「/ message_response/param_list [@name = \」ViaAddressList \「]/value/param_list」,documentBuilder.parse(xmlFile), XPathConstants.NodeList);' – 2011-04-26 15:24:26