Java 如果XML有enclosure标记,DOM解析器将出现空指针异常
我正在创建一个android应用程序来解析RSS提要,在过去的几周里,它一直运行良好。但是最近其中一篇文章有一个Java 如果XML有enclosure标记,DOM解析器将出现空指针异常,java,android,domparser,Java,Android,Domparser,我正在创建一个android应用程序来解析RSS提要,在过去的几周里,它一直运行良好。但是最近其中一篇文章有一个标记,应用程序停止工作,logcat声明DOMParser抛出了一个NullPointerException。 我经历并尝试了我的java知识所能做的一切。但是没有用 作为补充说明,如果我手动删除有问题的标签,问题就解决了,应用程序再次正常工作 这是我正在解析的xml <item> <title>Title</title> <link>L
标记,应用程序停止工作,logcat声明DOMParser抛出了一个NullPointerException。我经历并尝试了我的java知识所能做的一切。但是没有用 作为补充说明,如果我手动删除有问题的标签,问题就解决了,应用程序再次正常工作 这是我正在解析的xml
<item>
<title>Title</title>
<link>Link</link>
<pubDate>Sun, 27 Jan 2013 05:08:30 +0000</pubDate>
<dc:creator></dc:creator>
<guid isPermaLink="false">guid</guid>
<content:encoded>
Content
</content:encoded>
<enclosure url="" length="22836034" type="audio/mpeg"/>
</item>
是NullPointerException的原因,但正如我前面所说的,如果提要没有
标记,它会正常工作
总之,如果XML文件有一个
标记,它将导致应用程序不再工作。但是没有标签,它工作得很好。我试图做的是忽略标记或(正确地)删除它,然后继续解析文档的其余部分。目前没有任何东西对我有效,这就是为什么我在这里问
任何帮助都将不胜感激。是的-您正在询问
项的每个子节点的第一个子节点的值
enclosure
节点没有任何子节点,因此返回null,如文档所示:
此节点的第一个子节点。如果没有这样的节点,则返回null
因此,在任何节点上调用getFirstChild()
都可以,但是在调用getNodeValue()
之前,您应该先检查该值是否为null。当然,是的,您需要的是项的每个子节点的第一个子节点的值
enclosure
节点没有任何子节点,因此返回null,如文档所示:
此节点的第一个子节点。如果没有这样的节点,则返回null
因此,在任何节点上调用getFirstChild()
都可以,但是在调用getNodeValue()
之前,应该先检查该值是否为null,谢谢,它成功了!在我睡眠不足的状态下,我一定忽略了这一点。一个简单的if语句解决了我的简单问题。再次感谢你,谢谢,成功了!在我睡眠不足的状态下,我一定忽略了这一点。一个简单的if语句解决了我的简单问题。再次感谢你。
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
NodeList nl = doc.getElementsByTagName("item");
int length = nl.getLength();
for (int i = 0; i < length; i++) {
Node currentNode = nl.item(i);
RSSItem _item = new RSSItem();
NodeList nchild = currentNode.getChildNodes();
int clength = nchild.getLength();
for (int j = 1; j < clength; j = j + 2) {
Node thisNode = nchild.item(j);
String nodeContent = null;
String nodeName = thisNode.getNodeName();
nodeContent = nchild.item(j).getFirstChild().getNodeValue();
nodeContent = nchild.item(j).getFirstChild().getNodeValue();