XML DOM ノードの削除
removeChild()メソッドは、指定したノードを削除します。
removeAttribute()メソッドは、指定した属性を削除します。
例
以下の例は、XMLファイルbooks.xmlを使用します。
外部JavaScriptの関数 loadXMLDoc()は、XMLファイルをロードするのに使用します。
要素ノードの削除
この例は、最初の<book>要素を削除するために、removeChild()を使用します。
カレント要素ノードの削除
この例は、カレント<book>要素を削除するために、parentNodeとremoveChild()を使用します。
テキストノードの削除
この例は、テキストノードを最初の<title>要素から削除するために、removeChild()を使用します。
テキストノードのテキストクリア
この例は、最初の<title>要素のテキストノードをクリアするために、nodeValue()プロパティを使用します。
名前による属性削除
この例は、"category"属性を最初の<book>要素から削除するために、removeAttribute()を使用します。
オブジェクトによる属性削除
この例は、すべての属性を全<book>要素から削除するために、removeAttributeNode()を使用します。
要素ノードの削除
removeChild()メソッドは、指定したノードを削除します。
ノードが削除されたときは、すべての子ノードもまた削除されます。
以下のコードは、ロードしたxmlから、最初の<book>要素を削除します:
例
xmlDoc=loadXMLDoc("books.xml");
y=xmlDoc.getElementsByTagName("book")[0];
xmlDoc.documentElement.removeChild(y);
|
試してください »
|
例の説明:
- loadXMLDoc()を用い、xmlDocに"books.xml"をロードします
- 変数 y に削除する要素ノードを設定します
- 親ノードからremoveChild()メソッドを使用して、要素ノードを削除します
自分自身の削除 - カレントノードの削除
removeChild()メソッドは、指定ノードを削除する唯一の方法です。
削除したいノードにナビゲートした時、parentNodeプロパティとremoveChild()メソッドを用いることで、そのノードを削除することが可能になります:
例
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0];
x.parentNode.removeChild(x);
|
試してください »
|
例の説明:
- loadXMLDoc()を用い、xmlDocに"books.xml"をロードします
- 変数yに削除する要素ノードを設定します
- parentNodeプロパティとremoveChild()メソッドを用いて、要素ノードを削除します
テキストノードの削除
removeChild()メソッドは、テキストノードを削除するためにも使用することができます:
例
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0];
y=x.childNodes[0];
x.removeChild(y);
|
試してください »
|
例の説明:
- loadXMLDoc()を用い、xmlDocに"books.xml"をロードします
- 変数 x に最初のタイトル要素ノードを設定します
- 変数 y に削除するテキストノードを設定します
- removeChild()メソッドを使用し、親ノードから要素ノードを削除します
ノードから、テキストを削除するためだけにremoveChild()を使用することは、あまり一般的ではありません。 nodeValueプロパティが代わりに使われます。 次の項を見てください。
テキストノードのクリア
nodeValueプロパティは、テキストノード値の変更やクリアに使用することができます:
例
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.nodeValue="";
|
試してください »
|
例の説明:
- loadXMLDoc()を用い、xmlDocに"books.xml"をロードします
- 変数 x に最初のタイトル要素のテキストノードを設定します
- nodeValueプロパティを使用し、テキストノードからテキストをクリアします
すべての<title>要素を通るループで、テキストノードを変更します:
試してください
名前による属性ノードの削除
removeAttribute(name)メソッドは、名前で属性ノードを削除するために使用します。
例: removeAttribute('category')
以下のコードは、最初の<book>要素の"category"属性を削除します:
例
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book");
x[0].removeAttribute("category");
|
試してください »
|
例の説明:
- loadXMLDoc()を用い、xmlDocに"books.xml"をロードします
- book ノードを取得するのにgetElementsByTagName()を使用します
- 最初の book 要素ノードから、"category"属性を削除します
すべての<book> 要素を通るループで、"category"属性を削除します:
試してください
オブジェクトによる属性ノードの削除
removeAttributeNode(node) メソッドは、パラメタとしてノードオブジェクトを使用することにより、属性ノードを削除するために使用します。
例: removeAttributeNode(x)
以下のコードは、全ての<book>要素の全属性を削除します:
例
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book");
for (i=0;i<x.length;i++)
{
while (x[i].attributes.length>0)
{
attnode=x[i].attributes[0];
old_att=x[i].removeAttributeNode(attnode);
}
}
|
試してください »
|
例の説明:
- loadXMLDoc()を用い、xmlDocに"books.xml"をロードします
- 全の book ノードを取得するために、getElementsByTagName()を使用します
- 各 book 要素に、何らかの属性がないかをチェックします
- book 要素に属性がある間は、属性を削除します
|