加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 教程 > 正文

ASP XML操作类代码共享

发布时间:2023-06-07 13:29:47 所属栏目:教程 来源:
导读:ASP XML操作类,想学习xml操作的朋友可以参考下。

复制代码代码如下:

Class XMLClass

Private objXml

Private xmlDoc

Private xmlPath

'//===========================================
ASP XML操作类,想学习xml操作的朋友可以参考下。
 
复制代码代码如下:
 
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
 
'//============================================================
 
'
 
Public Function CreateNew(sName)
 
Set tmpNode = objXml.createElement(sName)
 
objXml.appendChild(tmpNode)
 
Set CreateNew = tmpNode
 
End Function
 
'
 
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
 
'
 
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
 
'//=============================================================================
 
'
 
Public Function SaveXML()
 
'ProcessingInstruction()
 
objXml.save(xmlPath)
 
End Function
 
'
 
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
 
 
ASP通过XMLDom在服务器端操作XML文件的主要方法和实现
 
对于小数据量,xml文件在检索更新上于ACCESS有很多优势。
 
我曾经测试过不用数据库,把网站的会员信息,商品数据信息,交易信息,网站定制信息全部存放在三个xml文件中,运行结果十分正常,感觉上比数据库快多了,不过没有作测试,不能确定。
 
下面说一下创建,查询,修改等对xml操作的主要方法
 
‘创建DOM对象
 
set objDom=server.CreateObject(”MicroSoft.XMLDom”)
 
‘取得xml数据
 
‘方法1 取得xml文件的xml数据
 
objDom.load(”c:/test.xml”)
 
‘方法2 取得xml数据串的数据
 
objDom.loadxml(”<people><man name=”sd”/></people>”)
 
‘创建一个节点对象
 
Set Newnode=objDom.CreateElement(”people”)
 
‘给这个节点赴值
 
Newnode.Text=”人”
 
‘ 给这个节点添加属性
 
Set NewAttribute=objDom.CreateNode(”attribute”,”name”,”")
 
NewAttribute.Text= ”张三”
 
Newnode.SetAttributeNode NewAttribute
 
‘给这个节点添加子节点
 
Set NewnodeChild=objDom.CreateElement(”address”)
 
Newnode.appendChild NewnodeChild
 
‘保存这个节点对象
 
objDom.appendChild Newnode
 
objDom.save(”c:/test.xml”)
 
‘查找一个节点对象
 
set objtofind=objdom.documentElement.SelectSingleNode(”//people/man”)
 
‘取出这个节点对象的 节点名,节点值,某个属性值,和全部的xml
 
nodename=objtofind.nodename
 
nodevalue=objtofind.text
 
objtofind.GetAttributeNode(”name”).Nodevalue '属性名为name的属性值
 
‘取出一个属性节点对象
 
set objattrtofind=objdom.documentElement.SelectSingleNode(”//people/man”). GetAttributeNode(”name”)
 
‘取出这个节点的属性名,属性值
 
nodeattrname=objattrtofind.nodename
 
nodeattrvalue=objattrtofind.nodevalue
 
‘删除一个节点对象
 
set objnode=objdom.documentElement.SelectSingleNode(”//people/man”) '要删除的节点
 
set objparentnode=objdom.documentElement.SelectSingleNode(”//people”) '要删除的节点的父节点
 
objparentnode.removeChild objnode
 
‘取出一个节点的字节点集合
 
set objnodes=objdom.documentElement.SelectSingleNode(”//people/man”).ChildNodes
 
遍历这个集合
 
方法1
 
for each element in objnodes
 
response.write element.nodename 字节点名
 
response.write element.text 字节点值
 
next
 
方法2
 
domlength=objnodes.length
 
for i = 0 to domlength-1
 
response.write objnodes.childnodes(i).nodename 字节点名
 
response.write objnodes.childnodes(i).text 字节点值
 
next
 
‘取出一个节点的属性集合
 
set objnodes=objdom.documentElement.SelectSingleNode(”//people/man”).GetAttributeNode(”name”).attributes
 
遍历这个集合
 
for each element in objnodes
 
response.write element.nodename 属性名
 
response.write element.nodevalue 属性值
 
next
 
等能够熟练的运用xmldom对象来操作xml文件了,就可以享
 
受xmlhttp对象来实现asp下的许多功能了。
 
re:[转]ASP通过XMLDom在服务器端操作XML文件的主要方法和实现
 
飞飞,你怎么不介绍一下@的用法,没了这个,很多事不方便。
 
xml,有人也称之为数据压缩技术,顾名思义,xml是可以充当数据库来用。
 
所以,我们可以把xml看成是“小型的数据库”。为什么说是小型呢?因为xml本身的功能及应用方便,与数据库还是存在着一定的差别。那我们为什么要使用xml呢?因为,有时候我们的一些应用程序虽然进行数据存取,但是,如果使用数据库的话,显行有些不够灵活,方便。这个时候,我们就应该结合xml来使用。
 
xml既然可以看成是数据库,那它的第一步工作就当然是创建链接对象了。(以ASP+xml为例)
 
创建方法同链接数据库一样,用server.createobject为创建。
 
方法如下:
 
set xmlDoc= Server.CreateObject(”microsoft.xmldom”)
 
xmlDoc.async=false
 
xmldata=数据源绝对路径
 
xmlDoc.load xmldata '这里使用load方法进行链接
 
既于xml的数据格式是比较人性化的,可以由于人为或其它的原因,引起数据格式不合法,这时如果继续使用的话,会引起程序出程,这样,我们往往在创建好链接对象后进行数据格式验证。
 
方法如下:
 
if xmlDoc.parseError.errorCode<>0 then
 
….错误处理
 
 
<%
 
‘—————————————————————-
 
‘程序简介: 完成asp语言对XML文档中指定节点文本的增加、删除、修改、查看
 
‘入口参数: 无
 
‘出口参数: 无
 
‘————————————————
 
‘函数名字:ConnectXml()
 
‘入口参数: filename 需要连接或打开的xml文件名
 
‘出口参数: 无
 
‘返回值 :ConnectXml=0,XMLMorntekDocument就是一个成功装载XML文档的对象了。
 
‘ ConnectXml<>0,则打印错误信息strError
 
‘————————————————
 
dim XMLMorntekDocument
 
function ConnectXml(filename)
 
dim strSourceFile
 
strSourceFile = Server.MapPath(filename)
 
Set XMLMorntekDocument = Server.CreateObject(”Microsoft.XMLDOM”)
 
XMLMorntekDocument.async = false
 
XMLMorntekDocument.load(strSourceFile)
 
ConnectXml=XMLMorntekDocument.parseerror.errorcode
 
if XMLMorntekDocument.parseerror.errorcode<>0 then
 
strError=”<h2>error”&XMLMorntekDocument.parseerror.errorcode&”</h2>”
 
strError=strError&XMLMorntekDocument.parseerror.reason&”<br>”
 
strError=strError&XMLMorntekDocument.parseerror.url&”<br>”
 
strError=strError&XMLMorntekDocument.parseerror.line&”<br>”
 
strError=strError&XMLMorntekDocument.parseerror.filepos&”<br>”
 
strError=strError&XMLMorntekDocument.parseerror.srcText&”<br>”
 
response.write strError
 
end if
 
end function
 
‘————————————————
 
‘函数名字:CloseXml()
 
‘入口参数: 无
 
‘出口参数: 无
 
‘————————————————
 
function CloseXml(XMLMorntekDocument)
 
if IsObject(XMLMorntekDocument) then
 
set XMLMorntekDocument=nothing
 
end if
 
end function
 
‘————————————————
 
‘函数名字:SelectXmlNodeText(elementname)
 
‘入口参数: elementname 元素的名字
 
‘出口参数: 无
 
‘————————————————
 
function SelectXmlNodeText(elementname)
 
elementname=”//”&elementname
 
temp=XMLMorntekDocument.selectSingleNode(elementname).text
 
selectXmlNodeText= server.htmlencode(temp)
 
end function
 
‘————————————————
 
‘函数名字:InsertXmlNodeText(befelementname,elementname,elementtext)
 
‘入口参数: elementname 插入的元素的名字
 
‘ befelementname在此元素的名字前面插入元素
 
‘ elementtext 插入的元素的文本
 
‘出口参数: 无
 
‘————————————————
 
function InsertXmlNodeText(befelementname,elementname,elementtext)
 
dim befelement,element
 
set befelement=XMLMorntekDocument.selectSingleNode(”//”&befelementname)
 
set element= XMLMorntekDocument.createelement(elementname)
 
befelement.insertBefore element,befelement.firstchild
 
element.text=elementtext
 
end function
 
‘————————————————
 
‘函数名字:UpdateXmlNodeText(elementname,newelementtext)
 
‘入口参数: elementname 元素的名字
 
‘ newelementtext元素的新文本
 
‘出口参数: 无
 
‘————————————————
 
function UpdateXmlNodeText(elementname,newelementtext)
 
dim element
 
set element=XMLMorntekDocument.selectSingleNode(”//”&elementname)
 
element.text=newelementtext
 
end function
 
‘————————————————
 
‘函数名字:DeleteXmlNodeText(elementname)
 
‘入口参数: elementname 元素的名字
 
‘出口参数: 无
 
‘————————————————
 
function DeleteXmlNodeText(elementname)
 
XMLMorntekDocument.selectSingleNode(”//”&elementname).text =”"
 
end function
 
%>
 
____________________
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!