2014-12-21 51 views
-1

我有一个xml文档,有(我认为)有点奇怪的结构,让我有点困扰。它看起来像如下:java.lang.NullPointerException XML标记

<Test1>84.23</Test1> 
<Test2>2014-12-01</Test2> 
<Test3></Test3> 
<Test4>Green</Test4> 
<Test5>Bottle</Test5> 
<Test6/> 
<Test7/> 

的问题是标记<Test3></Test3>结构,你可以SE其他标签 - 空当 - 只是提供例如<Test6/>

对于“正常”的标签(例如<Test6/>)我可以使用下面的代码来检查它是否为空,空或返回0

if(eElement.getElementsByTagName("Test6").item(0).getTextContent().isEmpty() 
        || eElement.getElementsByTagName("Test6").item(0).getTextContent().trim().length() == 0 
        || eElement.getElementsByTagName("Test6").item(0).getTextContent() == null)   
        { 
         array[1] = null; 
        } 

但是施加在<Test3></Test3>上述代码时 - 标签结构我总是得到java.lang.NullPointerException

我也试过在我的if语句中应用"".equals(eElement.getElementsByTagName("Test6").item(0).getTextContent()),但仍然得到抛出的空异常。

我想要做的就是将数组[1]设置为null,如果Test3 -tag为空,0或为空。我做错了什么,如何解决?

回答

1

我预计拨打getElementsByTagName("Test6")会返回一个空的NodeList。如果您在空的NodeList上拨打item(...),它将返回null,无论索引是什么。然后,您尝试调用null上的方法,并为您提供NPE。

我在做什么错,我该如何解决?

您需要先测试NodeList大小,然后再尝试对其进行索引。或者测试null

提示:阅读javadocs!