XML DOM: Remove Nodes
Let's see how to remove an element node with removeChild()
, a text node, an attribute node by name and by object with removeAttribute()
and removeAttributeNode()
.
Remove an Element Node with removeChild() Method
The removeChild()
method removes a specified node. When a node is removed, all its child nodes are also removed.
Example:
y = xmlDoc.getElementsByTagName("book")[0];
xmlDoc.documentElement.removeChild(y);
Remove the Current Node
The removeChild()
method is the only way to remove a specified node.
When you have navigated to the node you want to remove, it is possible to remove that node using the parentNode property and the removeChild()
method.
x = xmlDoc.getElementsByTagName("tagname")[0];
x.parentNode.removeChild(x);
Remove a Text Node with removeChild() Method
The removeChild()
method can also be used to remove a text node.
x = xmlDoc.getElementsByTagName("tagname")[0];
y = x.childNodes[0];
x.removeChild(y);
It is not very common to use removeChild()
just to remove text from a node. You can use the nodeValue
property instead.
Clear a Text Node with nodeValue
The nodeValue
property can be used to change the value of a text node.
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue = "";
Remove Attribute Node by Name with removeAttribute()
The removeAttribute()
method removes the attribute with the specified name from the element.
The syntax is:
element.removeAttribute(attrName);
where attrName is a string that specifies the name of the attribute to remove from the element.
If the specified attribute does not exist, removeAttribute()
returns without generating an error.
Example: remove the publisher
attribute in the first <book>
element:
x = xmlDoc.getElementsByTagName("book");
x[0].removeAttribute("publisher");
Remove Attribute Node by Object with removeAttributeNode()
The removeAttributeNode()
removes the specified attribute from the element.
The syntax is:
let removedNode = element.removeAttribute(attrName);
where attributeNode is the attribute node to remove from the element.
It returns the attribute node that was removed.
Example: remove all attributes of first <book>
element:
x = xmlDoc.getElementsByTagName("book")[0];
while (x.attributes.length > 0) {
attNode = x.attributes[0];
old_att = x.removeAttributeNode(attNode);
}