为了账号安全,请及时绑定邮箱和手机立即绑定

正在回答

7 回答

首先你得知道节点得类型。1.Element 节点 2. Text 节点 3.Attr 节点

其中代码 cn节点集合下一共有9个子节点,根据此xml,解析类型顺序依此(空格或回车为#text类型)

(#text,Element,#text,Element,#text,Element,#text,Element,#text)

“cn.item(k)”得到的,可能是一个Element节点(例如:<name>冰与火之歌</name>)或者

#text节点类型,因为没有子节点,也就是说,代码“cn.item(k).getFirstChild()”为null,而你的代码

“cn.item(k).getFirstChild().getTextContent()”其中又进行对null对象的操作,所以指针为空了。

解决方法:

修改34-39行代码为:

NodeList cn=book.getChildNodes();
for (int k = 0; k < cn.getLength(); k++) {
    if (cn.item(k).getNodeType()==Node.ELEMENT_NODE) {
        System.out.println(cn.item(k).getNodeName());
        System.out.println(cn.item(k).getFirstChild().getNodeValue());
    }
}


1 回复 有任何疑惑可以回复我~

把37、38行都括到if执行语句中去

0 回复 有任何疑惑可以回复我~

我也有同样的问题,请问你最后怎么解决的?

0 回复 有任何疑惑可以回复我~
#1

M__

把37、38行都括到if执行语句中去
2017-10-28 回复 有任何疑惑可以回复我~

你的if条件块,没有将两个输出语句都括起来,循环结束后第二个语句再用它就会空指针异常

2 回复 有任何疑惑可以回复我~

应该是当前节点下没有子节点

也就是说你的book.xml在<name>冰与火之歌</name>改成<name><a>aa</a>冰与火之歌</name>

0 回复 有任何疑惑可以回复我~

你把的xml文件内容也截图下吧,或者试下把38行换成system.out.println(cn.item(k).getFirstChild().getTextContent().getTextContent());   看下有没输出值

0 回复 有任何疑惑可以回复我~

应该是当前节点下没有子节点

0 回复 有任何疑惑可以回复我~
#1

RoyalT 提问者

我是照着视频写的啊!
2017-06-05 回复 有任何疑惑可以回复我~
#2

瞳孔中的世界 回复 RoyalT 提问者

人家老师37,38行的两个输出是用大括号包起来的。你抄错了。
2018-11-07 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么我这里报空指针异常?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信