XML DOM - Create Nodes

From http://www.w3schools.com (Copyright Refsnes Data)

# XML DOM Create Nodes

## Examples

The examples below use the XML file books.xml.
A function, loadXMLDoc(), in an external JavaScript is used to load the XML file.

Create an element node
This example uses createElement() to create a new element node, and appendChild() to add it to a node.

Create an attribute node using createAttribute
This example uses createAttribute() to create a new attribute node, and setAttributeNode() to insert it to an element.

Create an attribute node using setAttribute
This example uses setAttribute() to create a new attribute for an element.

Create a text node
This example uses createTextNode() to create a new text node, and appendChild() to add it to an element.

Create a CDATA section node
This example uses createCDATAsection() to create a CDATA section node, and appendChild() to add it to an element.

Create a comment node
This example uses createComment() to create a comment node, and appendChild() to add it to an element.

## Create a New Element Node

The createElement() method creates a new element node:

    xmlDoc=loadXMLDoc("books.xml");

    newel=xmlDoc.createElement("edition");

    x=xmlDoc.getElementsByTagName("book")[0];
    x.appendChild(newel);

Example explained:

1. Load "books.xml" into xmlDoc using loadXMLDoc()
2. Create a new element node <edition>
3. Append the element node to the first <book> element

Try it yourself

Loop through and add an element to all <book> elements: Try it yourself

## Create a New Attribute Node

The createAttribute() is used to create a new attribute node:

    xmlDoc=loadXMLDoc("books.xml");

    newatt=xmlDoc.createAttribute("edition");
    newatt.nodeValue="first";

    x=xmlDoc.getElementsByTagName("title");
    x[0].setAttributeNode(newatt);

Example explained:

1. Load "books.xml" into xmlDoc using loadXMLDoc()
2. Create a new attribute node "edition"
3. Set the value of the attribute node to "first"
4. Add the new attribute node to the first <title> element

Try it yourself

Loop through all <title> elements and add a new attribute node: Try it yourself

Note: If the attribute already exists, it is replaced by the new one.

## Create an Attribute Using setAttribute()

Since the setAttribute() method creates a new attribute if the attribute does not exist, it can be used to create a new attribute.

    xmlDoc=loadXMLDoc("books.xml");

    x=xmlDoc.getElementsByTagName('book');
    x[0].setAttribute("edition","first");

Example explained:

1. Load "books.xml" into xmlDoc using loadXMLDoc()
2. Set (create) the attribute "edition" with the value "first" for the first <book> element

Try it yourself

Loop through all <title> elements and add a new attribute: Try it yourself

## Create a Text Node

The createTextNode() method creates a new text node:

    xmlDoc=loadXMLDoc("books.xml");

    newel=xmlDoc.createElement("edition");
    newtext=xmlDoc.createTextNode("first");
    newel.appendChild(newtext);

    x=xmlDoc.getElementsByTagName("book")[0];
    x.appendChild(newel);

Example explained:

1. Load "books.xml" into xmlDoc using loadXMLDoc()
2. Create a new element node <edition>
3. Create a new text node with the text "first"
4. Append the new text node to the element node
5. Append the new element node to the first <book> element

Try it yourself

Add an element node, with a text node, to all <book> elements: Try it yourself

## Create a CDATA Section Node

The createCDATASection() method creates a new CDATA section node.

    xmlDoc=loadXMLDoc("books.xml");

    newCDATA=xmlDoc.createCDATASection("Special Offer & Book Sale");

    x=xmlDoc.getElementsByTagName("book")[0];
    x.appendChild(newCDATA);

Example explained:

1. Load "books.xml" into xmlDoc using loadXMLDoc()
2. Create a new CDATA section node
3. Append the new CDATA node to the first <book> element

Try it yourself

Loop through, and add a CDATA section, to all <book> elements: Try it yourself

## Create a Comment Node

The createComment() method creates a new comment node.

    xmlDoc=loadXMLDoc("books.xml");

    newComment=xmlDoc.createComment("Revised March 2008");

    x=xmlDoc.getElementsByTagName("book")[0];
    x.appendChild(newComment);

Example explained:

1. Load "books.xml" into xmlDoc using loadXMLDoc()
2. Create a new comment node
3. Append the new comment node to the first <book> element

Try it yourself

Loop through, and add a comment node, to all <book> elements: Try it yourself

From http://www.w3schools.com (Copyright Refsnes Data)