DOM 删除节点

  • 定义和使用

    removeChild() 方法将删除指定的节点。
    删除节点后,其所有子节点也将被删除。
    此代码将从已加载的xml中删除第一个<book>元素:
    此代码更改第一个<title>元素的文本节点值:
    y = xmlDoc.getElementsByTagName("book")[0];
    xmlDoc.documentElement.removeChild(y);
    尝试一下
    示例说明:
    • 假设 books.xml 已加载到 xmlDoc 中。
    • 将变量 y 设置为要删除的元素节点
    • 通过从父节点使用 removeChild() 方法来删除元素节点
  • 删除当前节点

    removeChild() 方法是删除指定节点的唯一方法。
    导航到要删除的节点后,可以使用 parentNode 属性和 removeChild() 方法删除该节点:
    x = xmlDoc.getElementsByTagName("book")[0];
    x.parentNode.removeChild(x);
    尝试一下
    示例说明:
    • 假设 books.xml 已加载到 xmlDoc 中。
    • 将变量 y 设置为要删除的元素节点
    • 通过使用 parentNode 属性和 removeChild() 方法删除元素节点
  • 删除文本节点

    removeChild() 方法也可以用于删除文本节点:
    x = xmlDoc.getElementsByTagName("title")[0];
    y = x.childNodes[0];
    x.removeChild(y);
    尝试一下
    示例说明:
    • 假设 books.xml 已加载到 xmlDoc 中。
    • 将变量 x 设置为第一个title元素节点
    • 将变量 y 设置为要删除的文本节点
    • 通过从父节点使用 removeChild() 方法来删除元素节点
    仅使用 removeChild() 从节点中删除文本不是很常见。 可以改为使用 nodeValue 属性。 参见下一段。
  • 清除文本节点

    nodeValue 属性可用于更改文本节点的值:
    xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue = "";
    尝试一下
    示例说明:
    • 假设 books.xml 已加载到 xmlDoc 中。
    • 获取第一个 title 元素的第一个子节点。
    • 使用 nodeValue 属性清除文本节点中的文本
  • 按名称删除属性节点

    removeAttribute() 方法通过名称删除属性节点。
    示例:removeAttribute('category')
    此代码删除第一个<book>元素中的 “category” 属性:
    x = xmlDoc.getElementsByTagName("book");
    x[0].removeAttribute("category");
    尝试一下
    示例说明:
    • 假设 books.xml 已加载到 xmlDoc 中。
    • 使用 getElementsByTagName() 获取书籍节点
    • 从第一本书元素节点中删除“category”属性
    遍历并删除所有<book>元素的 “category” 属性:自己尝试一下
  • 按对象删除属性节点

    removeAttributeNode() 方法使用节点对象作为参数来删除属性节点。/div>
    示例:removeAttributeNode(x)
    此代码删除所有<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);
        }
    }
    尝试一下
    示例说明:
    • 假设 books.xml 已加载到 xmlDoc 中。
    • 使用 getElementsByTagName() 获取所有书籍节点
    • 对于每个书本元素,检查是否有任何属性
    • 当 book 元素中有属性时,请删除该属性