XML DOM ノード削除
- 前のページ DOM ノードの変更
- 次のページ DOM ノードの交換
removeChild()メソッドは指定されたノードを削除します。
removeAttribute()メソッドは指定された属性を削除します。
例
以下の例では、XMLファイルを使用します books.xml
関数 loadXMLDoc()、外部のJavaScriptに位置して、XMLファイルをロードするために使用されます。
- 要素ノードを削除します
- この例では、removeChild()を使用して最初の<book>要素を削除します。
- 現在の要素ノードを削除します
- この例では、parentNodeとremoveChild()を使用して現在の<book>要素を削除します。
- テキストノードを削除
- この例では、removeChild()を使用して最初の<title>要素のテキストノードを削除します。
- テキストノードのテキストを空にします
- この例では、nodeValue()属性を使用して最初の<title>要素のテキストノードを空にします。
- 名前に基づいて属性を削除します
- この例では、removeAttribute()を使用して最初の<book>要素から"category"属性を削除します。
- オブジェクトに基づいて属性を削除します
- この例では、removeAttributeNode()を使用して<book>要素のすべての属性を削除します。
要素ノードを削除します
removeChild()メソッドは指定されたノードを削除します。
ノードが削除されると、そのすべての子ノードも削除されます。
以下のコードスニペットは、読み込んだ xmlから最初の<book>要素を削除します:
xmlDoc=loadXMLDoc("books.xml"); y=xmlDoc.getElementsByTagName("book")[0]; xmlDoc.documentElement.removeChild(y);
例を説明します:
- 使用して loadXMLDoc() " をbooks.xml" xmlDoc に読み込みます
- 変数yを削除する要素ノードに設定します。
- removeChild()メソッドを使用して、親ノードから要素ノードを削除します。
自身を削除 - 現在のノードを削除
removeChild()メソッドは、指定されたノードを削除するための唯一の方法です。
必要なノードを定位したら、parentNode属性とremoveChild()メソッドを使用して、このノードを削除できます:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book")[0]; x.parentNode.removeChild(x);
例を説明します:
- 使用して loadXMLDoc() " をbooks.xml" xmlDoc に読み込みます
- 変数yを削除する要素ノードに設定します。
- parentNode属性とremoveChild()メソッドを使用して、この要素ノードを削除します。
テキストノードを削除
removeChild()メソッドは、テキストノードを削除するために使用できます:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title")[0]; y=x.childNodes[0]; x.removeChild(y);
例を説明します:
- 使用して loadXMLDoc() " をbooks.xml" xmlDoc に読み込みます
- 変数xを最初のtitle要素ノードに設定します。
- 変数yを削除するテキストノードに設定します。
- removeChild()メソッドを使用して、親ノードからノードを削除します。
あまり使われないremoveChild()は、ノードからテキストを削除するために使用されます。nodeValue属性で代用できます。次のセクションを見てください。
テキストノードを空にする
nodeValue属性は、テキストノードの値を変更したり空にしたりするために使用できます:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title")[0].childNodes[0]; x.nodeValue="";
例を説明します:
- 使用して loadXMLDoc() " をbooks.xml" xmlDoc に読み込みます
- 変数xを最初のtitle要素のテキストノードに設定します。
- nodeValue属性を使用してテキストノードのテキストを空にします。
すべての<title>要素のテキストノードをループして変更します:TIY
名前に基づいて属性ノードを削除
removeAttribute(name)メソッドは、名前に基づいて属性ノードを削除するために使用されます。
例: removeAttribute('category')
以下のコードスニペットは、最初の<book>要素から"category"属性を削除します:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book"); x[0].removeAttribute("category");
例を説明します:
- 使用して loadXMLDoc() " をbooks.xml" xmlDoc に読み込みます
- getElementsByTagName()を使用してbookノードを取得します。
- 最初の book ノードから "category" 属性を削除します
すべての <book> ノードの "category" 属性を削除します:TIY。
オブジェクトに基づいて属性ノードを削除します
removeAttributeNode(node) メソッドは、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() " をbooks.xml" xmlDoc に読み込みます
- getElementsByTagName() を使用してすべての book ノードを取得します
- 各 book 要素が属性を持っているか確認します
- ある book 要素に属性が存在する場合、その属性を削除します
- 前のページ DOM ノードの変更
- 次のページ DOM ノードの交換