Web Services, Part VII: XML Object's Nodes and Types: Creating a New Attribute Node - Doc JavaScript | WebReference

Web Services, Part VII: XML Object's Nodes and Types: Creating a New Attribute Node - Doc JavaScript


Web Services, Part VII: XML Object's Nodes and Types

Creating a New Attribute Node

The DOMDocument object exposes the CreateAttribute() method. Creating an attribute with this method is the same as creating a node with createNode() where the type is "attribute" and no namespace is specified. In order to create a namespace-qualified attribute, use the createNode() method. You can only set the name of the attribute with createAttibute(). Use the setAttribute() method to set its value.

Notice that when you create the attribute object, it is not automatically connected to the current document's tree. Its ownerDocument property is equal to the document object, but its parentNode property is null. Use the setAttribute() method to associate an attribute with an element.

The syntax of the method is:

createAttribute(name)

where name is a string specifying the new attribute's name. This name will be echoed in the new node's nodeName property.

Let's look at an example. First, let's read in our mydvd XML file:

var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
xmlDoc.async = false;
xmlDoc.load("mydvd.xml");

Now, find the root of the tree and create the new attribute object:

root = xmlDoc.documentElement;
newAtt = xmlDoc.createAttribute("Year");

Create a collection of all of root's attributes and assign it to nameNodeMap:

namedNodeMap = root.attributes;

Use the setNamedItem() method to set one of the attributes in this collection:

namedNodeMap.setNamedItem(newAtt);

Let's summarize the above calls in one function:

function addAttribute() {
  var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
  var root;
  var newAtt;
  var namedNodeMap;
  xmlDoc.async = false;
  xmlDoc.load("mydvd.xml");
  alert(xmlDoc.documentElement.xml);
  root = xmlDoc.documentElement;
  newAtt = xmlDoc.createAttribute("Year");
  namedNodeMap = root.attributes;
  namedNodeMap.setNamedItem(newAtt);
  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 in the <sales> tag.


Next: A Final Word

http://www.internet.com


Produced by Yehuda Shiran and Tomer Shiran
All Rights Reserved. Legal Notices.
Created: January 28, 2002
Revised: January 28, 2002

URL: http://www.webreference.com/js/column102/6.html