XMLDOMノードの削除

removeChild() 方法删除指定的节点。

removeAttribute() 方法删除指定的属性。

删除元素节点

removeChild() 方法删除指定的节点。

当一个节点被删除时,它的所有子节点也会被删除。

这段代码将从已加载的 xml 中删除第一个 <book> 元素:

y = xmlDoc.getElementsByTagName("book")[0];
xmlDoc.documentElement.removeChild(y);

実際に試してみてください

例解:

  1. 仮定 books.xml 已被読み込まれました xmlDoc
  2. 変数を y 設定するための削除する要素ノード
  3. 使用 removeChild() 方法从父节点中删除该元素节点

删除自己 - 删除当前节点

removeChild() 方法是唯一可以删除指定节点的方法。

当您导航到要删除的节点时,可以使用 parentNode 属性と removeChild() 方法来删除该节点:

x = xmlDoc.getElementsByTagName("book")[0];
x.parentNode.removeChild(x);

実際に試してみてください

例解:

  1. 仮定 books.xml 已被読み込まれました xmlDoc
  2. 変数を y 設定するための削除する要素ノード
  3. 使用 parentNode 属性と removeChild() メソッドを使用して要素ノードを削除します

テキストノードを削除する

removeChild() メソッドは、テキストノードを削除するためにも使用できます:

x = xmlDoc.getElementsByTagName("title")[0];
y = x.childNodes[0];
x.removeChild(y);

実際に試してみてください

例解:

  1. 仮定 books.xml 已被読み込まれました xmlDoc
  2. 変数を x 最初の title 元素ノードに設定します
  3. 変数を y 設定するためのテキストノード
  4. 使用 removeChild() メソッドを使用して、親ノードからこのノードを削除します

以下の removeChild() ノードからテキストを削除する場合は稀です。nodeValue 属性を使用して代わりに使用できます。次のセクションを参照してください。

テキストノードをクリアします

nodeValue 属性は、テキストノードの値を変更したりクリアするために使用できます:

xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue = "";

実際に試してみてください

例解:

  1. 仮定 books.xml 已被読み込まれました xmlDoc
  2. 最初の title 元素の最初の子ノードを取得します
  3. 使用 nodeValue 属性を使用してテキストノードのテキストをクリアします

属性名に基づいて属性ノードを削除します

removeAttribute() 属性名に基づいて属性ノードを削除するために使用される方法です。

例1

以下のコードは、最初の <book> 要素から "category" 属性を削除します:

x = xmlDoc.getElementsByTagName("book");
x[0].removeAttribute("category");

実際に試してみてください

例解:

  1. 仮定 books.xml 已被読み込まれました xmlDoc
  2. 使用 getElementsByTagName() book ノードを取得するために
  3. 最初の book 要素ノードから "category" 属性を削除します

例2

すべての <book> 要素の "category" 属性を循環して削除します:

for (i = 0; i < xLen; i++) {
    y = x.item(i);
    y.removeAttribute('category');
}

実際に試してみてください

オブジェクトに基づいて属性ノードを削除します

removeAttributeNode() Nodeオブジェクトを使用してパラメータとして指定することで、属性ノードを削除する方法です。

以下コードは、すべての <book> 要素の属性を削除します:

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);
    }
}

実際に試してみてください

例解:

  1. 仮定 books.xml 已被読み込まれました xmlDoc
  2. 使用 getElementsByTagName() すべての book ノードを取得するために
  3. 各 book 要素に属性があるか確認します
  4. book 要素に属性が存在する場合、その属性を削除します