使用Classic ASP在XML文档中附加子项
发布时间:2020-12-16 03:46:04 所属栏目:asp.Net 来源:网络整理
导读:我有以下asp-classic代码,它将3个变量附加到 XML文档中,’location_x’,’location_y’和’date_and_time’. ASP-Classic代码 – 创建或附加现有XML文档. Function LoadObjecttoXML(strXMLFilePath,strFileName) Dim objDom Dim objGpx Dim objWpt Dim objRt
我有以下asp-classic代码,它将3个变量附加到
XML文档中,’location_x’,’location_y’和’date_and_time’.
ASP-Classic代码 – 创建或附加现有XML文档. 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:Inetpubwwwrootxml","doc.xml" 'error check If err.number <> 0 then Response.write("Error: " & err.number ) Else Response.write("Success!") End If 我遇到的问题是当我第二次附加变量时,附加的XML不会放在正确的元素中. 例如,XML代码在第一个追加时看起来像这样: <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> 当我第二次追加时: <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> 我希望XML附加如下: <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> 我很想听听任何建议;关于如何实现这一目标的提示或提示. 解决方法
检查blnFileExists是无用的,与rte无关.首先删除以下部分.
'Append "rte" element only once' If blnFileExists = True Then Set objRte = objDom.documentElement Else Set objRte = objDom.createElement("rte") objGpx.appendChild objRte End If 相反,你需要确保文档中有一个rte. 要检查节点是否存在,可以使用selectSingleNode.它只返回第一个匹配的对象.如果没有节点与表达式匹配,则返回Nothing. 'Append "rte" element only once' Set objRte = objGpx.SelectSingleNode("rte") If objRte Is Nothing Then ' rte does not exist Set objRte = objDom.createElement("rte") objGpx.appendChild objRte End If 更新#1 ASP文件: <% ' junk variables required in the function Dim location_x,location_y,date_and_time location_x = 56 location_y = 43 date_and_time = Now 'calling function twice 'will result an example.xml file near the asp file LoadObjecttoXML Server.Mappath("."),"example.xml" LoadObjecttoXML Server.Mappath("."),"example.xml" 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' Set objRte = objGpx.SelectSingleNode("rte") If objRte Is Nothing Then ' rte does not exist 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",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 %> example.xml输出(手动美化): <?xml version="1.0"?> <gpx> <wpt lat="56" lon="43"> <time>26.09.2016 16:08:49</time> </wpt> <rte> <rtept lat="56" lon="43"> <time>26.09.2016 16:08:49</time> </rtept> <rtept lat="56" lon="43"> <time>26.09.2016 16:08:49</time> </rtept> </rte> <wpt lat="56" lon="43"> <time>26.09.2016 16:08:49</time> </wpt> </gpx> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Asp.Net Core 生成二维码(NuGet使用QRCoder)
- asp.net-mvc – EF实体与服务模型与查看模型(MVC)
- asp.net-mvc – 存储库模式 – 如何正确处理JOIN和复杂查询
- 如何在ASP.Net MVC中执行301永久重定向路由
- asp.net-mvc – ASP.NET MVC – Routes和UrlHelper
- ASP.NET(MVC)服务图像
- asp.net – 如何创建/使用MembershipProvider?
- 存储过程 – ASP Classic – Recordset对象与命令对象
- razor – ASP.NET mvc使用IEnumerable模型和输入标记帮助器
- asp.net-mvc-4 – 如何实现自定义SiteMapNodeProvider
推荐文章
站长推荐
- asp.net – 如何调用我的WCF服务构造函数?
- 在使用ASP.NET MVC的Action方法中使用哪种重定向
- 将ASP.NET应用程序连接到QuickBooks Online Edit
- .net – 如何序列化邮件?
- asp-classic – 从ASP.Classic中的Web.Config读取
- 如何在asp.net c#上创建一个真正的XLS文件?
- .net – 实现UserManager以使用自定义类和存储过
- asp.net-mvc – 没有App_Data,Asp.net mvc无法运
- asp.net – Web部署项目构建不再属于项目的文件
- asp.net-mvc – 使用哪种FormsAuthentication方法
热点阅读