为啥在android应用程序中解析xml时出现nullpointerexception?
Posted
技术标签:
【中文标题】为啥在android应用程序中解析xml时出现nullpointerexception?【英文标题】:Why nullpointerexception when parsing xml in android application?为什么在android应用程序中解析xml时出现nullpointerexception? 【发布时间】:2011-03-26 15:30:55 【问题描述】:我们有一个 android 应用程序在 android 2.1 之前运行良好,但是当我们尝试为 android 2.2 发布它时,我们得到一个空指针异常。当我们在以下代码行解析 xml 时会发生这种情况:
((node) getText.item(0).getNodeValue();
感谢您的帮助!
【问题讨论】:
【参考方案1】:NullPointerException
可能会在几种不同的情况下抛出。来自文档:
当应用程序在需要对象的情况下尝试使用
调用null
时抛出。其中包括:null
对象的实例方法。 访问或修改null
对象的字段。 将null
的长度视为一个数组。 像数组一样访问或修改null
的槽。 将null
视为Throwable
值。应用程序应抛出此类的实例以指示
null
对象的其他非法用途。
与任何异常一样,您应该仔细检查堆栈跟踪,看看是否有任何有用的信息说明它被抛出的原因。如果确实是由非法访问null
引用引起的,就好像它是一个真实的对象一样,那么调试这类问题的一般方法是分解这样的表达式:
// chained method invokations, can be hard to debug
var.method1().method2(arg).method3()
分成多个这样的语句:
// broken into multiple assignments
var1 = var.method1();
var2 = var1.method2();
var3 = var2.method3();
现在,当NullPointerException
出现时,您将知道抛出它的链的确切部分,即var
是null
。
识别 where 部分可以快速缩小对 why 的搜索范围。如果var
本身是null
,则将其追溯到以前的分配。如果varN
是null
,那么查看methodN()
的文档,看看在什么情况下它可以返回null
。
如果null
来自容器/可变数据结构上的get
-type 操作,那么问题就不再那么精确地定位了,您必须弄清楚对应的set
发生在哪里.如果null
从来都不是这个容器的合法值,那么也许它应该在set
期间执行null
-检查:最好早点而不是晚点导致失败,因为错误的来源可以更本地化很容易。
相关问题
在调试NullPointerException
:
关于投掷NullPointerException
的特定于应用程序的行为:
关于其他对学习有指导意义的NullPointerException
场景:
String.valueOf(null)
throw a NullPointerException
?
Why null == 0
throws NullPointerException
in Java?
Why does int num = Integer.getInteger("123")
throw NullPointerException
?
null
本身:
null
in Java?
How to avoid != null
statements in Java?
【讨论】:
【参考方案2】:这是一个格式错误的代码。请纠正。然后确保您没有在 null
值上调用任何方法。
【讨论】:
以上是关于为啥在android应用程序中解析xml时出现nullpointerexception?的主要内容,如果未能解决你的问题,请参考以下文章
在 Android Studio 中使用 AsyncTask 解析在线 XML 文件时出现 NetworkOnMainThreadException