2013-03-21 59 views
0

我是android編程的新手。我的需求是調用web服務。我成功地從web services中得到了響應。在android.Give中我解析了響應。如何在android中解析xml數據的字符串

這是獲得響應代碼:

HttpResponse response = httpclient.execute(httppost); 
      String str=response.getStatusLine().toString(); 

      System.out.println("========URL STATUS========"+str); 

      HttpEntity r_entity = response.getEntity(); 

      if(r_entity != null) { 
       result = new byte[(int) r_entity.getContentLength()]; 
       if(r_entity.isStreaming()) { 
        is = new DataInputStream(r_entity.getContent()); 
        is.readFully(result); 

       } 
      } 

      httpclient.getConnectionManager().shutdown(); 
      String responsedata= (new String(result).toString()); 
+0

什麼類型的格式,你會得到迴應? – rajeshwaran 2013-03-21 12:38:11

+0

首先看看EntityUtils.toString(),其次是:使用像SimpleXML或其他東西一樣的XML解析器 – 2013-03-21 12:39:31

回答

3

以下示例適用於dom解析器。

DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
InputSource is = new InputSource(); 
StringReader sr=new StringReader(result.toString()); 
is.setCharacterStream(sr); 
Document doc = db.parse(is); 
NodeList nodes = doc.getElementsByTagName("your root tag"); 

//get your other tag elements. 

http://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/。 dom解析器的例子。

http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/。薩克斯分析器的例子。

Dom是基於w3c的解析器。 Dom比sax慢,因爲它使用樹節點並且必須位於mmeory中。因此不建議使用DOM解析器解析大數據。

SAX另一方面比dom更快。推薦用於大型XML數據。

上面的鏈接給你兩個例子。使用上述任何解析器來解析和獲取xml標籤中的值。

+0

我解析結果,但它是給整個結果作爲一個string.how以XML標記明智分裂? – user2195073 2013-03-21 13:12:56

+0

你必須使用sax或dom解析器或簡單的xml解析器來解析xml – Raghunandan 2013-03-21 13:21:20

0

你可以嘗試使用SimpleXmlParser。這是一個原生的android類。它比DOM xml解析器更簡單。