Eliminar nodos de DOM de XML

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

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

删除元素节点

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

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

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

Ejemplo

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

Prueba por tu cuenta

Ejemplo de explicación:

  1. Supongamos books.xml Se ha cargado xmlDoc En
  2. Establecer la variable y Establecer el nodo de elemento a eliminar
  3. Uso removeChild() 方法从父节点中删除该元素节点

删除自己 - 删除当前节点

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

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

Ejemplo

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

Prueba por tu cuenta

Ejemplo de explicación:

  1. Supongamos books.xml Se ha cargado xmlDoc En
  2. Establecer la variable y Establecer el nodo de elemento a eliminar
  3. Uso parentNode La propiedad y removeChild() El método se utiliza para eliminar el nodo de elemento

Eliminar el nodo de texto

removeChild() El método también se puede usar para eliminar el nodo de texto:

Ejemplo

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

Prueba por tu cuenta

Ejemplo de explicación:

  1. Supongamos books.xml Se ha cargado xmlDoc En
  2. Establecer la variable x Establecer el nodo del primer elemento title
  3. Establecer la variable y Establecer el nodo de texto a eliminar
  4. Uso removeChild() El método elimina el nodo desde el nodo padre

Únicamente usando removeChild() La eliminación de texto desde el nodo no es común. Puede usar la propiedad nodeValue en su lugar. Vea el siguiente párrafo.

Vaciar el nodo de texto

nodeValue La propiedad se puede usar para cambiar o vaciar el valor del nodo de texto:

Ejemplo

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

Prueba por tu cuenta

Ejemplo de explicación:

  1. Supongamos books.xml Se ha cargado xmlDoc En
  2. Obtener el primer nodo hijo del primer elemento title
  3. Uso nodeValue La propiedad se puede usar para cambiar o vaciar el valor del nodo de texto

Eliminar el nodo de propiedad según el nombre

removeAttribute() El método se utiliza para eliminar el nodo de propiedad según el nombre.

Ejemplo 1

El siguiente código elimina la propiedad "category" del primer elemento <book>:

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

Prueba por tu cuenta

Ejemplo de explicación:

  1. Supongamos books.xml Se ha cargado xmlDoc En
  2. Uso getElementsByTagName() Para obtener el nodo book
  3. Eliminar la propiedad "category" del primer nodo de elemento book

Ejemplo 2

Bucle y elimina todas las propiedades "category" de todos los elementos <book>:

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

Prueba por tu cuenta

Eliminar el nodo de propiedad según el objeto

removeAttributeNode() El método utiliza un objeto Node como parámetro para eliminar el nodo de propiedad.

El siguiente código elimina todas las propiedades de todos los elementos <book>:

Ejemplo

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

Prueba por tu cuenta

Ejemplo de explicación:

  1. Supongamos books.xml Se ha cargado xmlDoc En
  2. Uso getElementsByTagName() Para obtener todos los nodos book
  3. Revisar si cada elemento book tiene atributos
  4. Eliminar el atributo si existe en algún elemento book