【问题标题】:Xml Parsing ErrorXml 解析错误
【发布时间】:2010-09-18 05:43:46
【问题描述】:

我在尝试通过 Android 中的 SAX Parser 解析来自 Web 服务的 Xml 响应时遇到此错误。

ERROR in LogCat :- " Response =====> org.xml.sax.InputSource@43b8e230 " 

我知道我需要转换 String 中的响应可能是通过 toString() 方法,但问题是我不知道该怎么做,因为我已经尝试了所有可能的转换方法,但是什么也没发生。

在 InputSource 中我传递了 url:-

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();

一切都很好,但我得到的响应需要转换成我不知道该怎么做的字符串。

有人可以帮忙吗?

谢谢, 大卫

【问题讨论】:

    标签: android xml parsing


    【解决方案1】:

    要解析 InputStream,您不必将其转换为字符串,您可以使用 Android 上可用的 Parsers 直接读取其元素和属性。您可以参考以下链接来做同样的事情

    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()));
    

    【讨论】:

    • 非常感谢Rahul先生的支持,我终于可以做到了。再次感谢您提供如此解压的答案。
    猜你喜欢
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多