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

您需要为空文本节点添加空检查并根据需要创建它们:

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 回答