2010-09-18 164 views
1

我在嘗試通過Android中的SAX解析器解析來自Web服務的Xml響應時出現此錯誤。Xml解析錯誤

ERROR in LogCat :- " Response =====> [email protected] " 

我知道了,我需要轉換成字符串的反應可能是通過toString()方法,但問題是我不知道該怎麼做,因爲我曾嘗試所有可能的方式我知道轉換,但沒有發生。

在InputSource中我傳遞的網址: -

URL url = new URL("http://www.google.com/ig/api?weather=Ahmedabad"); 
SAXParserFactory spf = SAXParserFactory.newInstance(); 
SAXParser sp = spf.newSAXParser(); 
XMLReader xmlr = sp.getXMLReader(); 
DemoHandler myDemoHandler = new DemoHandler(); 
xmlr.setContentHandler(myDemoHandler); 
xmlr.parse(new InputSource(url.openStream())); 
Log.e(TAG, "Condition"); 
System.out.println("Response ====> " + new InputSource(url.openStream().toString())); 
ParsedDemoData parsedDemoData = myDemoHandler.getParsedData(); 

一切都很好,但我得到的需求響應將被轉換成字符串,我不知道該怎麼辦。

任何人都可以請這個幫忙。

感謝, 大衛

回答

1

要分析你不必把它轉換成字符串就可以直接讀取其內容和使用適用於Android的解析器屬性的InputStream。您可以參考以下鏈接做同樣的

http://www.ibm.com/developerworks/opensource/library/x-android/index.html

http://www.anddev.org/parsing_xml_from_the_net_-_using_the_saxparser-t353.html

如何過,如果你正在尋找輸入流轉換爲字符串,像這樣的代碼將工作

public String convertStreamToString(InputStream is) throws IOException { 
      /* 
      * To convert the InputStream to String we use the BufferedReader.readLine() 
      * method. We iterate until the BufferedReader return null which means 
      * there's no more data to read. Each line will appended to a StringBuilder 
      * and returned as String. 
      */ 
      if (is != null) { 
       StringBuilder sb = new StringBuilder(); 
       String line; 

       try { 
        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); 
        while ((line = reader.readLine()) != null) { 
         sb.append(line).append("\n"); 
        } 
       } finally { 
        is.close(); 
       } 
       return sb.toString(); 
      } else {   
       return ""; 
      } 
     } 

而且這應該爲你打印流

System.out.println("Response ====> " + convertStreamToString(url.openStream())); 
+0

謝謝您非常感謝您的支持Mr.Rahul,重申您的答案我終於可以做到。再次感謝這樣一個壓力緩解的答案。 – 2010-09-18 08:32:12