在Android 2.1上解析DOM的问题

时间:2011-06-15 19:09:46

标签: android parsing exception dom normalize

我是Android新手,我制作了简单的应用程序,它从XML RSS提要中读取数据,并将其呈现给用户。它在Android 2.2或更高版本的电话和Android 2.1的模拟器上工作正常,但在使用android 2.1的电话上规范化DOM文件时抛出异常。

以下是代码的一部分:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();

Document dom = db.parse(in);
Element docEle = dom.getDocumentElement();
dom.normalize();

NodeList nl = docEle.getElementsByTagName("item");
if (nl != null && nl.getLength() > 0) {
     //some stuff here
}

与指令dom.normalize()一致,应用程序抛出以下异常:

06-15 17:20:01.161: ERROR/ActivityManager(79): fail to set top app changed!
06-15 17:20:07.501: ERROR/AndroidRuntime(1199): Uncaught handler: thread refresh_news exiting due to uncaught exception
06-15 17:20:07.531: ERROR/AndroidRuntime(1199): org.w3c.dom.DOMException
06-15 17:20:07.531: ERROR/AndroidRuntime(1199):     at org.apache.harmony.xml.dom.InnerNodeImpl.removeChild(InnerNodeImpl.java:184)
06-15 17:20:07.531: ERROR/AndroidRuntime(1199):     at org.apache.harmony.xml.dom.InnerNodeImpl.normalize(InnerNodeImpl.java:161)
06-15 17:20:07.531: ERROR/AndroidRuntime(1199):     at com.krawczyk.lech.services.NewsService.doRefreshNews(NewsService.java:231)
06-15 17:20:07.531: ERROR/AndroidRuntime(1199):     at com.krawczyk.lech.services.NewsService.access$0(NewsService.java:209)
06-15 17:20:07.531: ERROR/AndroidRuntime(1199):     at com.krawczyk.lech.services.NewsService$1.run(NewsService.java:201)
06-15 17:20:07.531: ERROR/AndroidRuntime(1199):     at java.lang.Thread.run(Thread.java:1102)
06-15 17:20:07.551: ERROR/dalvikvm(1199): Unable to open stack trace file '/data/anr/traces.txt': Permission denied

这是Android 2.1的一般问题还是我的错?请帮忙。

1 个答案:

答案 0 :(得分:0)

我进行了搜索并找到了这个blog,它描述了sdk 7中出现的一个错误,其中的错误导致qName为空,而localname用XML元素值填充。那里还有一个解决方案。

我相信你可能会遇到同样的问题。