首页 / 网页编程 / ASP / 一个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>