script language="vbscript" runat="server"> '============================================================ '作者:做回自己 '时间:2005-3-15 ============================================================ Class XMLClass Private objXml Private xmlDoc Private xmlPath '//============================================================ '!--类初始化及注销时的事件--> Sub Class_initialize Set objXml = Server.CreateObject("MSXML2.DOMDocument") objXml.preserveWhiteSpace = true objXml.async = false End Sub Sub Class_Terminate Set objXml = Nothing End Sub '//============================================================ '!--建立一个新的XML文档--> Public Function CreateNew(sName) Set tmpNode = objXml.createElement(sName) objXml.appendChild(tmpNode) Set CreateNew = tmpNode End Function '!--从外部读入XML文档--> Public Function OpenXml(sPath) OpenXml=False sPath=Server.MapPath(sPath) 'Response.Write(sPath) xmlPath = sPath If objXml.load(sPath) Then Set xmlDoc = objXml.documentElement OpenXml=True End If End Function '!--从外部读入XML字符串--> Public Sub LoadXml(sStr) objXml.loadXML(sStr) Set xmlDoc = objXml.documentElement End Sub Public Sub InceptXml(xObj) Set objXml = xObj Set xmlDoc = xObj.documentElement End Sub '//============================================================ '!--新增一个节点--> Public Function AddNode(sNode,rNode) ' sNode STRING 节点名称 ' rNode OBJECT 增加节点的上级节点引用 '============================================================= Dim TmpNode Set TmpNode = objXml.createElement(sNode) rNode.appendChild TmpNode Set AddNode = TmpNode End Function '!--新增一个属性--> Public Function AddAttribute(sName,sValue,oNode) ' sName STRING 属性名称 ' sValue STRING 属性值 ' oNode OBJECT 增加属性的对象 '============================================================= oNode.setAttribute sName,sValue End Function '!--新增节点内容--> Public Function AddText(FStr,cdBool,oNode) Dim tmpText If cdBool Then Set tmpText = objXml.createCDataSection(FStr) Else Set tmpText = objXml.createTextNode(FStr) End If oNode.appendChild tmpText End Function '======================================================================================================== '!--取得节点指定属性的值--> Public Function GetAtt(aName,oNode) ' aName STRING 属性名称 ' oNode OBJECT 节点引用 '============================================================= dim tmpValue tmpValue = oNode.getAttribute(aName) GetAtt = tmpValue End Function '!--取得节点名称--> Public Function GetNodeName(oNode) ' oNode OBJECT 节点引用 GetNodeName = oNode.nodeName End Function '!--取得节点内容--> Public Function GetNodeText(oNode) ' oNode OBJECT 节点引用 GetNodeText = oNode.childNodes(0).nodeValue End Function '!--取得节点类型--> Public Function GetNodeType(oNode) ' oNode OBJECT 节点引用 GetNodeType = oNode.nodeValue End Function '!--查找节点名相同的所有节点--> Public Function FindNodes(sNode) Dim tmpNodes Set tmpNodes = objXml.getElementsByTagName(sNode) Set FindNodes = tmpNodes End Function '!--查打一个相同节点--> Public Function FindNode(sNode) Dim TmpNode Set TmpNode=objXml.selectSingleNode(sNode) Set FindNode = TmpNode End Function '!--删除一个节点--> Public Function DelNode(sNode) Dim TmpNodes,Nodesss Set TmpNodes=objXml.selectSingleNode(sNode) Set Nodesss=TmpNodes.parentNode Nodesss.removeChild(TmpNodes) End Function '!--替换一个节点--> Public Function ReplaceNode(sNode,sText,cdBool) 'replaceChild Dim TmpNodes,tmpText Set TmpNodes=objXml.selectSingleNode(sNode) 'AddText sText,cdBool,TmpNodes If cdBool Then Set tmpText = objXml.createCDataSection(sText) Else Set tmpText = objXml.createTextNode(sText) End If TmpNodes.replaceChild tmpText,TmpNodes.firstChild End Function
Private Function ProcessingInstruction '//--创建XML声明 Dim objPi Set objPi = objXML.createProcessingInstruction("xml", "version="chr(34)"1.0"chr(34)" encoding="chr(34)"gb2312"chr(34)) '//--把xml生命追加到xml文档 objXML.insertBefore objPi, objXML.childNodes(0) End Function '//============================================================================= '!--保存XML文档--> Public Function SaveXML() 'ProcessingInstruction() objXml.save(xmlPath) End Function '!--另存XML文档--> Public Function SaveAsXML(sPath) ProcessingInstruction() objXml.save(sPath) End Function '//================================================================================== '相关统计 '!--取得根节点--> Property Get Root Set Root = xmlDoc End Property '!--取得根节点下子节点数--> Property Get Length Length = xmlDoc.childNodes.length End Property '//================================================================================== '相关测试 Property Get TestNode TestNode = xmlDoc.childNodes(0).text End Property End Class /script>