|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
有两文件: objXML.asp:测试文件 clsXML.asp:vbs类文件 代码: objXML.asp <%@ Language=VBScript %> <% Option Explicit %> <!--#INCLUDE FILE="clsXML.asp"--> <% Dim objXML, strPath, str Set objXML = New clsXML strPath = Server.MapPath(".") & "New.xml" objXML.createFile strPath, "Root" \\\'Or If using an existing XML file: \\\'objXML.File = "C:File.xml" objXML.createRootChild "Images" \\\'Here only one attribute is added to the Images/Image Node objXML.createChildNodeWAttr "Images", "Image", "id", "1" objXML.updateField "Images//Image[@id=1]", "super.gif" objXML.createRootNodeWAttr "Jobs", Array("Size", "Length", "Width"), _ Array(24, 31, 30) objXML.createRootNodeWAttr "Jobs", Array("Size", "Length", "Width"), _ Array(24, 30, 29) objXML.createRootNodeWAttr "Jobs", Array("Size", "Length", "Width"), _ Array(24, 31, 85) \\\'Notice that all three job nodes have size 24, all of those \\\'nodes will be updated objXML.updateField "Jobs[@Size=24]", "24\\\'s" \\\'Notice that only two nodes have the specified XPath, hence \\\'only two new child nodes will be added objXML.createChildNodeWAttr "Jobs[@Size=24 and @Length=31]", "Specs", _ Array("Wood", "Metal", "Color"), _ Array("Cedar", "Aluminum", "Green") \\\'It is always important to iterate through all of the nodes \\\'returned by this XPath query. For Each str In objXML.getField("Jobs[@Size=24]") Response.Write(str & "<br>") Next Set objXML = Nothing Response.Redirect "New.xml" %> clsXML.asp: <% Class clsXML \\\'strFile must be full path to document, ie C:XMLXMLFile.XML \\\'objDoc is the XML Object Private strFile, objDoc \\\'********************************************************************* \\\' Initialization/Termination \\\'********************************************************************* \\\'Initialize Class Members Private Sub Class_Initialize() strFile = "" End Sub \\\'Terminate and unload all created objects Private Sub Class_Terminate() Set objDoc = Nothing End Sub \\\'********************************************************************* \\\' Properties \\\'********************************************************************* \\\'Set XML File and objDoc Public Property Let File(str) Set objDoc = Server.CreateObject("Microsoft.XMLDOM") objDoc.async = False strFile = str objDoc.Load strFile End Property \\\'Get XML File Public Property Get File() File = strFile End Property \\\'********************************************************************* \\\' Functions \\\'********************************************************************* \\\'Create Blank XML File, set current obj File to newly created file Public Function createFile(strPath, strRoot) Dim objFSO, objTextFile Set objFSO = Server.CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.CreateTextFile(strPath, True) objTextFile.WriteLine("<?xml version=""1.0""?>") objTextFile.WriteLine("<" & strRoot & "/>") objTextFile.Close Me.File = strPath Set objTextFile = Nothing Set objFSO = Nothing End Function \\\'Get XML Field(s) based on XPath input from root node Public Function getField(strXPath) Dim objNodeList, arrResponse(), i Set objNodeList = objDoc.documentElement.selectNodes(strXPath) ReDim arrResponse(objNodeList.length) For i = 0 To objNodeList.length - 1 arrResponse(i) = objNodeList.item(i).Text Next getField = arrResponse End Function \\\'Update existing node(s) based on XPath specs Public Function updateField(strXPath, strData) Dim objField For Each objField In objDoc.documentElement.selectNodes(strXPath) objField.Text = strData Next objDoc.Save strFile Set objField = Nothing updateField = True End Function \\\'Create node directly under root Public Function createRootChild(strNode) Dim objChild Set objChild = objDoc.createNode(1, strNode, "") objDoc.documentElement.appendChild(objChild) objDoc.Save strFile Set objChild = Nothing End Function \\\'Create a child node under root node with attributes Public Function createRootNodeWAttr(strNode, attr, val) Dim objChild, objAttr Set objChild = objDoc.createNode(1, strNode, "") If IsArray(attr) And IsArray(val) Then If UBound(attr)-LBound(attr) <> UBound(val)-LBound(val) Then Exit Function Else Dim i For i = LBound(attr) To UBound(attr) Set objAttr = objDoc.createAttribute(attr(i)) objChild.setAttribute attr(i), val(i) Next End If Else Set objAttr = objDoc.createAttribute(attr) objChild.setAttribute attr, val End If objDoc.documentElement.appendChild(objChild) objDoc.Save strFile Set objChild = Nothing End Function \\\'Create a child node under the specified XPath Node Public Function createChildNode(strXPath, strNode) Dim objParent, objChild For Each objParent In objDoc.documentElement.selectNodes(strXPath) Set objChild = objDoc.createNode(1, strNode, "") objParent.appendChild(objChild) Next objDoc.Save strFile Set objParent = Nothing Set objChild = Nothing End Function \\\'Create a child node(s) under the specified XPath Node with attributes Public Function createChildNodeWAttr(strXPath, strNode, attr, val) Dim objParent, objChild, objAttr For Each objParent In objDoc.documentElement.selectNodes(strXPath) Set objChild = objDoc.createNode(1, strNode, "") If IsArray(attr) And IsArray(val) Then If UBound(attr)-LBound(attr) <> UBound(val)-LBound(val) Then Exit Function Else Dim i For i = LBound(attr) To UBound(attr) Set objAttr = objDoc.createAttribute(attr(i)) objChild.SetAttribute attr(i), val(i) Next End If Else Set objAttr = objDoc.createAttribute(attr) objChild.setAttribute attr, val End If objParent.appendChild(objChild) Next objDoc.Save strFile Set objParent = Nothing Set objChild = Nothing End Function \\\'Delete the node specified by the XPath Public Function deleteNode(strXPath) Dim objOld For Each objOld In objDoc.documentElement.selectNodes(strXPath) objDoc.documentElement.removeChild objOld Next objDoc.Save strFile Set objOld = Nothing End Function End Class %> 返回类别: 教程 上一教程: 在WEB.CONFIG中添加连接字符串 下一教程: 防止ASP下载的终极方式 您可以阅读与"VBS类生成XML文件"相关的教程: · FSO+递归生成文件列表(XML) · 如何用ASP动态生成XML文件 · ASP中VBSCRIPT访问XML文件 · 使用XMLHTTP和ADODB.STREAM取得远程文件并保存到本地 · XMLHTTP组件获取远程文件并筛选出目标数据 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |