A man from Argentina asked me for some sample code to add data from an HTML form into an XML file.

I have put together three files - they are shown below

Click here to see the input form in a new window

It needs you to be using IIS and to have MSXML4 installed on your server

First an XML file needs to exist - a sample of such an empty file is shown below - on my server it can be found at http://www.byershostinggeorge.co.uk/xmlstuff/dummy.xml
<top-node>
</top-node>
			

Next the HTML file is http://www.ibrus.com/testing/addtoxml.htm there is a link to it above.

It is a very skeletal file that should be fairly easy to understand, so I will not insult any readers intelligence by describing it !!
<HTML>
<HEAD>

</HEAD>

<BODY>
<H1>DEMONSTRATION OF ADDING FIELDS TO XML FILE</H1>
<FORM METHOD="POST" ACTION="addtoxml.ASP">

<input TYPE="TEXT" NAME="Field_1" size="48">Field 1 
(A mandatory field)<br>
<input TYPE="TEXT" NAME="Field_2" size="48">Field 2<br>
<input TYPE="TEXT" NAME="Field_3" size="48">Field 3<br>
<input TYPE="SUBMIT" VALUE="Save it">

<P>
<img src="http://www.sst-counters.co.uk/counter1.asp?c_id=C321121">


</form>  
</BODY>
</HTML>
			

Next comes the ASP (Active Server Page) that does the work - it is written, of course, in Visual Basic Script.

To understand it, you will need to have a reasonable knowledge of VBScript. If you do not please feel free to enquire in the box at the bottom of this page (remember to include details of who you are and your EMail address if you want a reply.
<%
'AddtoXML.asp

 function createXMLDocFromFile(xmlFileName)
  set xmlDoc = Server.CreateObject("MSXML2.DomDocument.4.0")
  xmlDoc.async = False
     xmlDoc.Load Server.MapPath(xmlFileName)
  xmlDoc.setProperty "SelectionLanguage", "XPath"
  set createXMLDocFromFile = xmlDoc
 end function

 sub addNewNode()
  set newNode = trialXmlDoc.createNode(1, Request.Form("Field_1"), "")
  newNode.setAttribute "Field_2", Request.Form("Field_2")
  newNode.setAttribute "Field_3", Request.Form("Field_3")
  trialXmlDoc.documentElement.appendChild(newNode)

 end sub



 'MAIN

if Request.Form("Field_1") = "" then
	ReplyText = "Field 1 must contain something
	ReplyText = ReplyText & "<P>Press BACK on your browser"
	ReplyText = ReplyText & " and try again."
	Response.Write ReplyText
	Response.End
end if

'Get a unique file name

Application("AppTimeNo") = Application("AppTimeNo") + 1
SecDef = DateDiff("s",date,now)
If SecDef <> Application("SecDef") Then
	Application("AppTimeNo") = 1
End If
Application("SecDef") = SecDef
ReplyFile1 = (SecDef * 100) + Application("AppTimeNo")

sXMLOutFile = ReplyFile1 & ".XML"

 set trialXmlDoc = createXMLDocFromFile("dummy.xml")

 call addNewNode
			
 trialXmlDoc.save(Server.MapPath(sXMLOutFile))

 Response.contentType = "text/xml"
 Response.write trialXmlDoc.xml


 set trialXmlDoc = Nothing


  %>
			

I hope that you have found this interesting.
I hope that you have found this useful.
Either of those means that I did not waste my time.
Niether of these means that I am sorry that I wasted your time !!