XML DOM Replace Nodes
The replaceChild() method replaces a specified node.
The nodeValue property replaces text in a text node.
Replace an Element Node
The replaceChild() method is used to replace a node.
The following code fragment replaces the first <book> element:
Example
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement;
//create a book element, title element and a text node
newNode=xmlDoc.createElement("book");
newTitle=xmlDoc.createElement("title");
newText=xmlDoc.createTextNode("A Notebook");
//add the text node to the title node,
newTitle.appendChild(newText);
//add the title node to the book node
newNode.appendChild(newTitle);
y=xmlDoc.getElementsByTagName("book")[0]
//replace the first book node with the new node
x.replaceChild(newNode,y);
Try it Yourself »
Example explained:
- Load books.xml into xmlDoc
- Create a new element node <book>
- Create a new element node <title>
- Create a new text node with the text "A Notebook"
- Append the new text node to the new element node <title>
- Append the new element node <title> to the new element node <book>
- Replace the first <book> element node with the new <book> element node
Replace Data In a Text Node
The replaceData() method is used to replace data in a text node.
The replaceData() method has three parameters:
- offset - Where to begin replacing characters. Offset value starts at zero
- length - How many characters to replace
- string - The string to insert
Example
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.replaceData(0,8,"Easy");
Try it Yourself »
Example explained:
- Load books.xml into xmlDoc
- Get the text node of the first <title> element node
- Use the replaceData method to replace the eight first characters from the text node with "Easy"
Use the nodeValue Property Instead
It is easier to replace the data in a text node using the nodeValue property.
The following code fragment will replace the text node value in the first <title> element with "Easy Italian":
Example
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.nodeValue="Easy Italian";
Try it Yourself »
Example explained:
- Load books.xml into xmlDoc
- Get the text node of the first <title> element node
- Use the nodeValue property to change the text of the text node
You can read more about changing node values in the Change Node chapter.