Web Services, Part VII: XML Object's Nodes and Types: Creating a New Node - Doc JavaScript
Web Services, Part VII: XML Object's Nodes and Types
Creating a New Node
The DOMDocument
object exposes the createNode()
method. You can use this method to create most of the dozen node types. You cannot create nodes of the following types:
6
("entity"
)9
("document"
)10
("documenttype"
)12
("notation"
)
The syntax of the method is as follows:
createNode(type, name, namespaceURI)
where:
type
is a value that uniquely identifies the node type. It can be specified by an integer between1
and12
, or by a string identical to thenodeTypeString
property of the node. For example, to create a node oftype
attribute, set type to2
or"attribute"
.name
is a string containing the new node's desirednodeName
property. You cannot set the name of all node types. Some node types enforce a constant string as their node name. The table on Page 3 lists all node types and the restrictions on their names. For example, node type11
("documentfragment"
) has a fixed name ("#document-fragment"
) which you cannot change. Specify an empty string for such node types (""
). Non-empty strings will be ignored.namespaceURI
is a string defining the namespace Uniform Resource Identifier (URI). If specified, the node will be created in the context of thenamespaceURI
, including any prefix specified with the node name. If a prefix is not specified, the default namespace is used. WhennamespaceURI
is the empty string,""
, the node is created within the special namespace of the current document.
Let's look at an example. The following code creates an XML object from an external file:
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument"); xmlDoc.async = false;
and then creates a new attribute node:
MyNode = xmlDoc.createNode("attribute", "Year", "");
The node is an object. We need to link him to our mydvd
tree. Let's add it to the root's first child node. The root of the tree is <sales>
. Its first child node, (see the tree representation in Page 2 of our previous column), is <summary>
. Let's code it. You usually start navigating the tree from the root. The root of the tree is:
xmlDoc.documentElement;
The collection of the root's childNodes
is:
xmlDoc.documentElement.childNodes
The first item on this collection is the first child:
xmlDoc.documentElement.childNodes.item(0)
The collection of attributes of this node (<sales>
) is:
xmlDoc.documentElement.childNodes.item(0).attributes
To insert the new node to this collection, you use the setNamedItem()
method, with the new node object as a parameter:
xmlDoc.documentElement.childNodes.item(0).attributes.setNamedItem(MyNode)
The addNode()
function summarizes the above calls:
function addNode() { var xmlDoc = new ActiveXObject("Msxml2.DOMDocument"); var MyNode; var namedNodeMap; xmlDoc.async = false; xmlDoc.load("mydvd.xml"); alert(xmlDoc.documentElement.xml); MyNode = xmlDoc.createNode("attribute", "Year", ""); namedNodeMap = xmlDoc.documentElement.childNodes.item(0).attributes; namedNodeMap.setNamedItem(MyNode); alert(xmlDoc.documentElement.xml); }
Try it now. The first alert box echoed the XML file before adding the attribute node. The second alert box reflects the addition. Notice the Year
attribute within the <summary>
tag.
Next: How to create an element (tag) node
Produced by Yehuda Shiran and Tomer Shiran
All Rights Reserved. Legal Notices.
Created: January 28, 2002
Revised: January 28, 2002
URL: https://www.webreference.com/js/column102/4.html