2014-12-21 3 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>, как вы можете себе другие теги - когда пустой - обеспечивает только, например, <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

Я также пробовал применить "".equals(eElement.getElementsByTagName("Test6").item(0).getTextContent()) в моей инструкции if, но все равно получить ненужное исключение.

Все, что я хочу сделать, это установить массив [1] равным null, если Test3 -tag пуст, 0 или null. Что я делаю неправильно и как это исправить?

ответ

1

Я ожидаю, что звонок getElementsByTagName("Test6") возвращает пустой NodeList. Если вы звоните item(...) на пустой NodeList, он будет возвращать null, независимо от того, какой индекс. Затем вы пытаетесь вызвать методы на этом null, и это дает вам NPE.

Что я делаю неправильно и как его исправить?

Перед тем, как попытаться проиндексировать его, вам необходимо проверить размер NodeList. Или проверьте для null.

Подсказка: прочитайте javadocs!