一个asp版XMLDOM操作类 |
本文标签:asp,XMLDOM <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> |