XML DOM 删除节点

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 元素中存在属性,则删除该属性