一个asp版XMLDOM操作类
2018-09-06 12:12
  <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文档 
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>