XML DOM Remove Nodes
The removeChild() method removes a specified node.
The removeAttribute() method removes a specified attribute.
Examples
The examples below use the XML file
books.xml.
A function, loadXMLDoc(), in an external JavaScript is used to load the XML file.
Remove an
element node
This example uses removeChild() to remove the first <book>
element.
Remove the
current element node
This example uses parentNode and removeChild() to remove the current <book>
element.
Remove a
text node
This example uses removeChild() to remove the text node from the first <title>
element.
Clear
the text of a text node
This example uses the nodeValue() property to clear the text node of the first
<title> element.
Remove
an attribute by name
This example uses removeAttribute() to remove the "category"
attribute from the first <book> element.
Remove attributes by object
This example uses removeAttributeNode() to remove all
attributes from all <book> elements.
Remove an Element Node
The removeChild() method removes a specified node.
When a node is removed, all its child nodes are also removed.
The following code fragment will remove the first <book> element from the loaded xml:
xmlDoc=loadXMLDoc("books.xml");
y=xmlDoc.getElementsByTagName("book")[0];
xmlDoc.documentElement.removeChild(y);
|
Example explained:
- Load "books.xml"
into xmlDoc using loadXMLDoc()
- Set the variable y to be the element node to remove
- Remove the element node by using the removeChild() method from the
parent node
Try it
yourself
Remove Myself - Remove the Current Node
The removeChild() method is the only way to removes 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:
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0];
x.parentNode.removeChild(x);
|
Example explained:
- Load "books.xml"
into xmlDoc using loadXMLDoc()
- Set the variable y to be the element node to remove
- Remove the element node by using the parentNode property and the
removeChild() method
Try it
yourself
Remove a Text Node
The removeChild() method can also be used to remove a text node:
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0];
y=x.childNodes[0];
x.removeChild(y);
|
Example explained:
- Load "books.xml"
into xmlDoc using loadXMLDoc()
- Set the variable x to be the first title element node
- Set the variable y to be the text node to remove
- Remove the element node by using the removeChild() method from the
parent node
Try it
yourself
It is not very common to use removeChild() just to remove the text from a
node. The nodeValue property can be used instead. See next paragraph.
Clear a Text Node
The nodeValue property can be used to change or clear the value of a text
node:
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.nodeValue="";
|
Example explained:
- Load "books.xml"
into xmlDoc using loadXMLDoc()
- Set the variable x to be the text node of the first title element
- Use the nodeValue property to clear the text from the text node
Try
it yourself
Loop through and change the text node of all <title> elements:
Try
it yourself
Remove an Attribute Node by Name
The removeAttribute(name) method is used to remove an attribute node
by its name.
Example: removeAttribute('category')
The following code fragment removes the "category" attribute
in the first <book> element:
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book");
x[0].removeAttribute("category");
|
Example explained:
- Load "books.xml"
into xmlDoc using loadXMLDoc()
- Use getElementsByTagName() to get book nodes
- Remove the "category" attribute form the first book element node
Try
it yourself
Loop through and remove the "category" attribute of all <book> elements:
Try
it yourself
Remove Attribute Nodes by Object
The removeAttributeNode(node) method is used to remove an attribute node,
using the node object as parameter.
Example: removeAttributeNode(x)
The following code fragment removes all the attributes of all <book> elements:
xmlDoc=loadXMLDoc("books.xml");
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);
}
}
|
Example explained:
- Load "books.xml"
into xmlDoc using loadXMLDoc()
- Use getElementsByTagName() to get all book nodes
- For each book element check if there are any attributes
- While there are attributes in a book element, remove the attribute
Try
it yourself
…
|