为啥在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 出现时,您将知道抛出它的链的确切部分,即varnull

识别 where 部分可以快速缩小对 why 的搜索范围。如果var 本身是null,则将其追溯到以前的分配。如果varNnull,那么查看methodN() 的文档,看看在什么情况下它可以返回null

如果null 来自容器/可变数据结构上的get-type 操作,那么问题就不再那么精确地定位了,您必须弄清楚对应的set 发生在哪里.如果null 从来都不是这个容器的合法值,那么也许它应该在set 期间执行null-检查:最好早点而不是晚点导致失败,因为错误的来源可以更本地化很容易。

相关问题

在调试NullPointerException:

How to trace a NullPointerException in a chain of getters Find out what variable is throwing a NullPointerException programatically

关于投掷NullPointerException 的特定于应用程序的行为:

IllegalArgumentException or NullPointerException for a null parameter? Is it okay to throw NullPointerException programatically ?

关于其他对学习有指导意义的NullPointerException 场景:

Why does String.valueOf(null) throw a NullPointerException? Why null == 0 throws NullPointerException in Java? Why does int num = Integer.getInteger("123") throw NullPointerException?

null 本身:

What is null in Java? How to avoid != null statements in Java?

【讨论】:

【参考方案2】:

这是一个格式错误的代码。请纠正。然后确保您没有在 null 值上调用任何方法。

【讨论】:

以上是关于为啥在android应用程序中解析xml时出现nullpointerexception?的主要内容,如果未能解决你的问题,请参考以下文章

在 Android Studio 中使用 AsyncTask 解析在线 XML 文件时出现 NetworkOnMainThreadException

“解析 XML 文件时出现异常:文件过早结束。”尝试将 svg 导入 Android Studio

为啥在解析 XML 时获取空节点值

解析程序包时出现问题如何解决?

在 Python 中解析 XML 时出现编码问题

解析包时出现问题是啥意思,怎样才能解决