[英]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.