簡體   English   中英

DOM Java中的空指針異常

[英]null pointer exception in DOM Java

我使用以下代碼進行xml節點提取,但是我收到了nullpointer異常

<root>
<place >
    <city> aaaaaa </city> 
    <state / >
    <country> zzzzzzzz </country>
<place>

</root>

我嘗試了以下代碼

NodeList nodeList = (NodeList)xPath1.compile(temp).evaluate(xmlDocument,XPathConstants.NODESET);
TempFlat = nodeList.item(0).getFirstChild().getNodeValue();

我已經谷歌搜索並得到了這個

 NodeList nodeList = (NodeList)xPath1.compile(temp).evaluate(xmlDocument,XPathConstants.NODESET);
Node nValue = (Node) nodeList.getFirstChild();

temp是我的xpath。 可以從文件中讀取。

/root/place/city
   /root/place/city
   /root/place/city

但是為此我得到以下錯誤

E:\Work\java\test.java:80: cannot find symbol
symbol  : method getFirstChild()
location: interface org.w3c.dom.NodeList
  Node nValue = (Node) nodeList.getFirstChild();
                                                                     ^
1 error

我發現這是因為<state / >為空。 我該如何解決。 誰能幫我

注意: 我已經找到了我發布的第二個錯誤的原因 ,但是我需要解決Null Pointer異常

NodeList沒有任何方法getFirstChild()

http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/NodeList.html

一旦有了NodeList

NodeList nodeList = (NodeList)xPath1.compile(temp).evaluate(xmlDocument,XPathConstants.NODESET);

nodeList獲取任何Node之前,請檢查其長度

if (nodeList.getLength() > 0)
    Node node = nodeList.items(0);

同樣,一旦有了Node並想要在這里得到第一個孩子,就需要確保該節點有一些孩子。

if (node.hasChildNodes())
    String value = node.getFirstChild().getNodeValue();

這樣,您可以避免null值。

文章底部的編譯錯誤是由於org.w3c.dom.NodeList沒有getFirstChild()方法。 參見JavaDoc

但是對於您的問題 ,您將需要在調用getNodeValue()方法之前檢查該節點是否存在。 當您在狀態節點上調用getFirstChild()時,由於它沒有子代,因此始終會得到null。 因此,對此空值調用getNodeValue()方法將導致您看到NullPointerException。 為了解決這個問題,您將在開始查找值之前先檢查該節點是否首先存在。 請嘗試以下代碼來解決您的問題。 我不確定TempFlat是什么,所以我假設它是一個String變量。

String tempFlat = "DEFAULT VALUE";
if(noteList.item(0).hasChildNodes())
    tempFlat = nodeList.item(0).getFirstChild().getNodeValue();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM