首页 > 编程 > ASP > 正文

一个asp版XMLDOM操作类

2024-05-04 11:09:11
字体:
来源:转载
供稿:网友
一个xmldom操作类代码,方便需要跟xml结合的代码
 
 
 
<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> 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表