开发者社区> 问答> 正文

Android XML解析

出现了一个奇怪的问题...我检查了几个网站,但找不到任何错误的代码...但是它返回了NullPointerException...


try { 

    SAXParserFactory f = SAXParserFactory.newInstance();
    SAXParser parser = f.newSAXParser();
    XMLReader reader = parser.getXMLReader();
    reader.setContentHandler(handler);
    System.out.println(uri_this);
    reader.parse(new InputSource(url_this.openStream())); // i get nullpointerexception here 

} catch (NullPointerException e) {
    System.out.println(e);
}

在catch语句中,我已捕获NullPointerException并使其打印错误。

该ContentHandler是很好的,因为我已经得到了小文件解析的文件,但对于较大的文件,它似乎没有工作时。问题是什么?还是我需要一些较大文件的缓冲?我一无所知,并尝试了除缓冲之外的所有可能性,因为我不知道该编码。

我发现了1件事:输入源的对象在reader.parse罐完成之前就被释放了。我不明白为什么会这样。

在LogCat提供了以下(只有错误部分):

01-06 15:12:27.145: INFO/System.out(319): http://mywebsite.com/products_xml.php?cPath=43
01-06 15:12:31.094: DEBUG/dalvikvm(319): GC freed 4031 objects / 203424 bytes in 189ms
01-06 15:12:31.505: DEBUG/dalvikvm(100): GC freed 3326 objects / 190192 bytes in 283ms
01-06 15:12:34.274: DEBUG/dalvikvm(319): GC freed 1153 objects / 80432 bytes in 146ms
01-06 15:12:34.646: INFO/System.out(319): java.lang.NullPointerException

我将构造函数url“ url_this” 4m作为参数。

展开
收起
Puppet 2020-01-24 12:05:14 550 0
1 条回答
写回答
取消 提交回答
  • 这里没有足够的信息来帮助您,但是您是否注意到您在外壳程序中打印出了一个名为uri_this的变量,但要解析的解除引用URL?因此,仅因为日志文件显示http://mywebsite.com/products_xml.php?cPath=43,它并不自动表示变量url已初始化并且还包含该字符串。

    或者可能是在某些情况下url对象上的openStream()方法(无论它是什么类型)都返回null,而InputSource无法处理在构造函数中传递null的情况。正如我所说-简短的摘要中没有足够的信息来解决您的问题。

    干杯。

    2020-01-24 12:05:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载

相关镜像