XML DOM Change Node Values

The nodeValue property is used to change a node value.
The setAttribute() method is used to change an attribute value.

Change the Value of an Element

In the DOM, everything is a node. Element nodes do not have a text value.
The text value of an element node is stored in a child node. This node is called a text node.
To change the text value of an element, you must change the value of the elements's text node.

Change the Value of a Text Node

The nodeValue property can be used to change the value of a text node.
Suppose "books.xml" has been loaded into xmlDoc.
This code changes the text node value of the first <title> element:

Example

xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue = "new content"
Example explained:
  1. Suppose "books.xml" is loaded into xmlDoc
  2. Get the first child node of the <title> element
  3. Change the node value to "new content"
Loop through and change the text node of all <title> elements: Try it yourself

Change the Value of an Attribute

In the DOM, attributes are nodes. Unlike element nodes, attribute nodes have text values.
The way to change the value of an attribute, is to change its text value.
This can be done using the setAttribute() method or setting the nodeValue property of the attribute node.

Change an Attribute Using setAttribute()

The setAttribute() method changes the value of an attribute.
If the attribute does not exist, a new attribute is created.
This code changes the category attribute of the <book> element:

Example

xmlDoc.getElementsByTagName("book")[0].setAttribute("category","food");
Example explained:
  1. Suppose "books.xml" is loaded into xmlDoc
  2. Get the first <book> element
  3. Change the "category" attribute value to "food"
Loop through all <title> elements and add a new attribute: Try it yourself
Note: If the attribute does not exist, a new attribute is created (with the name and value specified).

Change an Attribute Using nodeValue

The nodeValue property is the value of a attribute node.
Changing the value property changes the value of the attribute.

Example

xmlDoc.getElementsByTagName("book")[0].getAttributeNode("category").nodeValue = "food";
Example explained:
  1. Suppose "books.xml" is loaded into xmlDoc
  2. Get the "category" attribute of the first <book> element
  3. Change the attribute node value to "food"