2011-05-06 52 views
0

我解析Android上XMLFILE和我有類似的東西:爲什麼getTagValue拋出空指針,如果空

<images> 
<image></image> 
</images> 

我有以下代碼:

Element imagesElement = (Element) poiElement.getElementsByTagName("images").item(0); 
         NodeList images = imagesElement.getElementsByTagName("image"); 
         for (int n = 0; n < images.getLength(); n++) { 
          Element imgElement = (Element) images.item(n); 
          String imgUrl = getTagValue("image", imgElement);<< ERROR HERE 
          if (imgUrl != "") { 
           //do something here        } 
         } 

如果我運行getTagValue( 「image」,imgElement)當標籤爲空時,我得到一個空指針異常,如果我運行它時,它會返回值。如果它是空的,我希望有一個空字符串!

我試着檢查日月食調試器中的imgElement來試圖確定我是如何檢查它是否是空的,但我無法弄清楚如何!誰能幫忙?

貝克斯

+0

你可以發佈你在LogCat中得到的錯誤嗎? – TofferJ 2011-05-06 15:16:17

+0

發佈'getTagValue'的代碼。問題在那裏。 – 2011-05-06 15:46:22

回答

0

我已經制定出我需要做的事情;

Element imgElement = (Element) images.item(n); 
NodeList fstNm = imgElement.getChildNodes(); //<--- Get the child nodes of the image element 
Node Test = ((Node) fstNm.item(0)); //<---- check that the child node isn't null, 
I don't understand why node, but it works! 
+0

作爲一個捷徑,您可以嘗試探索'String content = imgElement.getTextContent()'爲您做了什麼。而對於進一步閱讀[這個問題](http://stackoverflow.com/questions/5527195/java-dom-gettextcontent-issue)給出了處理文本內容的相當好的見解。 – harism 2011-05-09 09:06:07

+0

getTextContent()在Android SDK中不存在,因爲這是我嘗試的第一件事!感謝您的鏈接,雖然我會看看! – Bex 2011-05-09 09:09:22

+0

你是對的,謝謝你指出這一點。實際上它只存在於API等級8以上,最好不要使用它。 – harism 2011-05-09 09:16:26

0

這樣看來,Element imgElement = (Element) images.item(n);正在恢復null。您可以在if (imgElement != null)之後封裝該語句後面的代碼以停止該異常。請注意,如果您只是從XML中讀取數據而不改變它,那麼最好使用SAXParser而不是DocumentBuilder類。

+0

感謝指針,但它不是imgElement,它是null,它是它的子節點。我會牢記SAXParser,儘管我的應用需要一段時間來解析,所以我需要改變它! – Bex 2011-05-09 08:01:22