IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    安卓Pull解析Premature end of document异常

    ShelWee发表于 2013-08-24 15:03:47
    love 0

    做安卓项目的时候用Pull解析xml,报如下错误:

    W/System.err(3384): Premature end of document. (position:line -1, column -1) caused by: org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 0: no element found; nested exception is:

    多次尝试发现是解析输入流的时候出现异常,将输入流重新包装到一个字节输出流中,最终在以输入流的形式提供给pull解析器解析。代码如下:

    private static void parseXML(InputStream xml) throws Exception{
                ByteArrayOutputStream outStream = new ByteArrayOutputStream();
                byte[] buffer = new byte[1024];
                int len = 0;
                while( (len = xml.read(buffer)) != -1){
                     outStream.write(buffer, 0, len);
                }
                outStream.close();
                XmlPullParser pullParser = Xml. newPullParser();
    //          pullParser.setInput( xml, "UTF-8");//直接将输入流写入即会报错
                pullParser.setInput( new ByteArrayInputStream(new String(outStream.toByteArray()).getBytes()), "UTF-8" );
                //do some work...
    }

    经过如上代码的装箱拆箱操作,这个异常已经解决了。其实完全可以将流的操作提取到一个工具类里面,方面其它地方也能调用。XMLPull在线解析XML异常处理 这篇文章里就有提供类似的方法,有兴趣的可以研究一下。



沪ICP备19023445号-2号
友情链接