парсинг тега XML без данных.получение NullPointerException - PullRequest
0 голосов
/ 06 апреля 2011

У меня есть xml без данных (например, данные для тега примечания), поэтому я пытаюсь обновить содержимое тега примечания, но получаю исключение NullPointerException.

Вот пример кода, который я использую.

NodeList itemCheckedNodeList = positionElement.getElementsByTagName("remark");
Element itemCheckedElement = (Element) itemCheckedNodeList.item(0);
NodeList itemCheckedLN = itemCheckedElement.getChildNodes();
Text itemCheckedText = (Text)itemCheckedLN.item(0);
itemCheckedText.setTextContent("Here is a new comment");

но я получаю исключение на "itemCheckedText.setTextContent(comments);"

<events>
      <event>
         <date>Some date here</date>
         <time>Some time here</time>
         <remark>Something about the event</remark>
      </event>
      <event>
         <date>Some date here</date>
         <time>Some time here</time>
         <remark></remark>
      </event>
</events>

У кого-нибудь есть решение для этого?

Ответы [ 2 ]

2 голосов
/ 06 апреля 2011

Вам нужно будет добавить нулевую проверку для пустых текстовых узлов и создать их при необходимости:

NodeList itemCheckedNodeList = positionElement.getElementsByTagName("remark");
Element itemCheckedElement = (Element) itemCheckedNodeList.item(0);
NodeList itemCheckedLN = itemCheckedElement.getChildNodes();
Text itemCheckedText = (Text) itemCheckedLN.item(0);
if (itemCheckedText == null) {
    Document doc = itemCheckedElement.getOwnerDocument();
    itemCheckedText = doc.createTextNode("remark");
    itemCheckedElement.appendChild(itemCheckedText);
}
itemCheckedText.setTextContent("Here is a new comment");
1 голос
/ 06 апреля 2011

Текст между элементами представлен как дочерние узлы.Пустой элемент, вероятно, не имеет дочернего текстового узла, поэтому вам нужно

  1. получить замечание
  2. проверить, есть ли дочерний элемент текстового узла, если не создать его
  3. установить текст
...