次の XML ドキュメントについて考えてみましょう。
<items>
<item>item1</item>
<item>item2</item>
</items>
それでは、すべてのアイテムを削除して、新しいアイテムを追加しましょう。コード:
//-- assume we have Element instance of <items> element: items_parent
// and the Document instance: doc
//-- remove all the items
NodeList items = items_parent.getElementsByTagName("item");
for (int i = 0; i < items.getLength(); i++){
Element curElement = (Element)items.item(i);
items_parent.removeChild(curElement);
}
//-- add a new one
Element new_item = doc.createElement("item");
new_item.setTextContent("item3");
items_parent.appendChild(new_item);
ファイルの新しい内容:
<items>
<item>item3</item>
</items>
これらの迷惑な空白行removeChild()
は子を削除するために表示されますが、削除された子のインデントと改行も残ります。そして、この indent_and_like_break はテキストコンテンツとして扱われ、ドキュメントに残されます。
関連する質問で、回避策を投稿しました:
items_parent.setTextContent("");
これらの空白行を削除します。しかし、これはハックの一種であり、原因ではなく結果を取り除きます。
したがって、問題は原因を取り除くことです:改行を使用して意図的に子を削除する方法は?