0

データのない xml (例: remark タグのデータ) があるため、remark タグの内容を更新しようとしましたが、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>

誰かがこれに対する解決策を持っていますか?

4

2 に答える 2

2

空のテキスト ノードの null チェックを追加し、必要に応じて作成する必要があります。

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");
于 2011-04-06T03:48:19.827 に答える
1

要素間のテキストは、ノードの子として表されます。空の要素にはおそらくテキストノードの子がないため、

  1. 意見をもらう
  2. テキストノードの子があるかどうかを確認し、ない場合は作成します
  3. テキストを設定する
于 2011-04-06T04:07:20.267 に答える