I have the following asp-classic code that adds 3 variables to an XML document: "location_x", "location_y" and "date_and_time".
ASP-Classic Code - Creates or adds an existing XML document.
Function LoadObjecttoXML(strXMLFilePath, strFileName) Dim objDom Dim objGpx Dim objWpt Dim objRte Dim objRtept Dim objDateTime Dim objattLat Dim objattLon Dim objPI Dim blnFileExists 'Instantiate the Microsoft XMLDOM Set objDom = server.CreateObject("Microsoft.XMLDOM") objDom.preserveWhiteSpace = True blnFileExists = objDom.Load(strXMLFilePath & "\" & strFileName) If blnFileExists = True Then Set objGpx = objDom.documentElement Else 'GPX root element and append it to the XML document. Set objGpx = objDom.createElement("gpx") objDom.appendChild objGpx End If Set objWpt = objDom.createElement("wpt") 'Create "Lat" attribute' Set objattLat = objDom.createAttribute("lat") objattLat.Text = (location_x) objWpt.setAttributeNode objattLat 'Create "Lon" attribute' Set objattLon = objDom.createAttribute("lon") objattLon.Text = (location_y) objWpt.setAttributeNode objattLon 'Create "date_and_time" element' Set objDateTime = objDom.createElement("time") objDateTime.Text = (date_and_time) 'Append "wpt" element as a child container element "gpx".' objGpx.appendChild objWpt 'Append the "time" element as a child of the "wpt" element' objWpt.appendChild objDateTime 'Append "rte" element only once' If blnFileExists = True Then Set objRte = objDom.documentElement Else Set objRte = objDom.createElement("rte") objGpx.appendChild objRte End If Set objRtept = objDom.createElement("rtept") 'Create "Lat" attribute' Set objattLat = objDom.createAttribute("lat") objattLat.Text = (location_x) objRtept.setAttributeNode objattLat 'Create "Lon" attribute' Set objattLon = objDom.createAttribute("lon") objattLon.Text = (location_y) objRtept.setAttributeNode objattLon 'Create "date_and_time" element' Set objDateTime = objDom.createElement("time") objDateTime.Text = (date_and_time) 'Append "rtept" element as a child container element "rte".' objRte.appendChild objRtept 'Append the "time" element as a child of the "rtept" element' objRtept.appendChild objDateTime If blnFileExists = False Then 'Create the xml processing instruction - and append to XML file Set objPI = objDom.createProcessingInstruction("xml", "version='1.0'") objDom.insertBefore objPI, objDom.childNodes(0) End If 'Save the XML document. objDom.save strXMLFilePath & "\" & strFileName Set objDom = Nothing Set objGpx = Nothing Set objWpt = Nothing Set objRte = Nothing Set objRtept = Nothing Set objDateTime = Nothing Set objattLat = Nothing Set objattLon = Nothing Set objPI = Nothing Set blnFileExists = Nothing End Function On Error Resume Next 'File path c:\ LoadObjecttoXML "c:\Inetpub\wwwroot\xml","doc.xml" 'error check If err.number <> 0 then Response.write("Error: " & err.number ) Else Response.write("Success!") End If
The problem is that when I add variables a second time, the added XML does not fit inside the correct elements.
For example, the XML code will look something like the one shown in the first appendix:
<gpx> <wpt lat="52.000" lon="-1.000"> <time>2016-09-23 23:38:00</time> </wpt> <rte> <rtept lat="52.000" lon="-1.000"> <time>2016-09-23 23:38:00</time> </rtept> </rte> </gpx>
When I add a second time:
<gpx> <wpt lat="52.000" lon="-1.000"> <time>2016-09-23 23:38:00</time> </wpt> <rte> <rtept lat="52.000" lon="-1.000"> <time>2016-09-23 23:38:00</time> </rtept> </rte> <wpt lat="52.100" lon="-1.100"> <time>2016-09-23 23:39:00</time> </wpt> <rte> <rtept lat="52.100" lon="-1.100"> <time>2016-09-23 23:39:00</time> </rtept> </rte> </gpx>
I would like to add XML as follows:
<gpx> <wpt lat="52.000" lon="-1.000"> <time>2016-09-23 23:38:00</time> </wpt> <wpt lat="52.100" lon="-1.100"> <time>2016-09-23 23:39:00</time> </wpt> <rte> <rtept lat="52.000" lon="-1.000"> <time>2016-09-23 23:38:00</time> </rtept> <rtept lat="52.100" lon="-1.100"> <time>2016-09-23 23:39:00</time> </rtept> </rte> </gpx>
I would like to hear any suggestions; hints or tips about how I could achieve this.
source share