2010-09-18 134 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