最近写的一个XMLDOM的类,一起分享(ASP)

来源:互联网 发布:传输过程中数据丢失 编辑:程序博客网 时间:2024/06/04 18:36

www.u8686.com-信息发布平台

最近写的一个XMLDOM的类,一起分享(ASP)

<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>

 

原创粉丝点击