2015-03-03 49 views
0

調用該方法來比較兩個XML節點。空指針異常正在發生。請幫助我提供寶貴的意見。比較兩個不同的xml文件時出現空指針異常

for (int i = 0; i < englishTextNodes.getLength(); i++) 
{ 
    for (int j = 0; j < otrLangTextNode.getLength(); j++) 
    { 
     if(englishTextNodes.item(i).getNodeValue().toString().compareToIgnoreCase(
       otrLangTextNode.item(j).getNodeValue().toString()) == 0) 
     { 
      Results.add(englishTextNodes.item(i).getNodeValue().toString()); 
      break; 
     } 
    } 
    return Results; 
} 
+3

請提供例外的堆棧跟蹤。或者至少要提及NPE會在哪條線上拋出。 – shridharama 2015-03-03 05:01:13

+0

示例XML文檔也會有所幫助。但是,完整的[SSCCE](http://sscce.org/)將是更可取的(Java代碼和XML)。 – dbank 2015-03-03 05:40:14

回答

0

添加檢查,以確保.getNodeValue()調用不返回null。如果.getNodeValue()返回null,則調用.toString()將拋出空指針異常。

您可能會希望編寫一個比較幫助器方法,在比較之前對空值進行計算,並在if語句中調用該方法,以便使代碼清潔。

0

非常感謝您的寶貴意見。我將方法從getNodeValue()更改爲getTextContent(),因爲getNodeValue()存儲空值,所以異常發生。現在它對我來說工作正常。以下是更改後的代碼。

for (int i = 0; i < englishTextNodes.getLength(); i++) 
     { 
      for (int j = 0; j < otrLangTextNode.getLength(); j++) 
      { 
if((englishTextNodes.item(i).getTextContent().toString().compareToIgnoreCase(otrLangTextNode.item(j).getTextContent().toString()))==0) 
         { 

Results.add( 「UntranslatedNodes」 + englishTextNodes.item(ⅰ).getTextContent()的toString()); 休息; } } }