How to update XML file from QTP

In previous QTP tutorial I shown how QTP can read data from XML file. Today I will explain how to update XML data from QTP. We will use this XML file:

Note: You can download this XML file here.

Let's check how to update different values in above XML file: 1. How to rename the title of first book? The QTP script is: Const XMLDataFile = "C:\TestData.xml" Const XMLNewFile = "C:\TestData2.xml" Set xmlDoc = CreateObject("Microsoft.XMLDOM") xmlDoc.Async = False xmlDoc.Load(XMLDataFile) ' update the title of the first book Set node = xmlDoc.SelectSingleNode("/bookstore/book[0]/title") node.Text = "Romeo and Juliet - Salvation" ' save changes xmlDoc.Save(XMLNewFile)

And the result is:

Note: The numeration begins from zero. That's why I use book[0] to access first item. 2. How to change the year of second book? I skip the opening and saving of XML file (see above QTP script). I show only the essence: ' update the attribute of the second book Set node = xmlDoc.SelectSingleNode("/bookstore/book[1]/title/@publishe d") node.Text = "2009" And the result is:

e: Use @ to access an attribute of XML node. 3. How to add new author add its new attribute? QTP script: ' select a parent node Set parentNode = xmlDoc.SelectSingleNode("/bookstore/book[2]") ' add a new author Set newNode = xmlDoc.CreateElement("author") newNode.Text = "Mr. Noname" parentNode.AppendChild (newNode)

Not

And the result is:

you can see, we've added "Mr. Noname" as the new author. 4. How to add new attribute for author (XML node)? QTP script: ' select a parent node Set parentNode = xmlDoc.SelectSingleNode("/bookstore/book[2]") ' add its attribute Set newAttrib = xmlDoc.CreateAttribute("bestseller") newAttrib.Text = "yes" parentNode.Attributes.SetNamedItem(newAttrib) The result is:

As

N ew attribute of a boof and its value ("bestseller"="yes") have been added. Well, the working with XML files from QTP is easy enough. Summary:
• • • •

shown in QTP - how to change value of XML node shown in QTP - how to change value of attribute shown in QTP - how to add new XML node shown in QTP - how to add new attribute