ASP 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

%>

____________________

本文未经测试,文章可行度未知。

时间: 2024-09-28 01:00:24

ASP XML操作类代码的相关文章

ASP XML操作类代码_应用技巧

复制代码 代码如下: Class XMLClass Private objXml Private xmlDoc Private xmlPath '//============================================================ ' Sub Class_initialize Set objXml = Server.CreateObject("MSXML2.DOMDocument") objXml.preserveWhiteSpace = tru

php实现的xml操作类_php技巧

本文实例讲述了php实现的xml操作类.分享给大家供大家参考,具体如下: <?php /* 使用方法: $test=new xml(); $test->new_xml('test.xml'); $test->root('document'); $test->append_root_node('book'); $test->append_child_node('author','linage'); $test->append_child_node('page',100);

C#实现的xml操作类完整实例_C#教程

本文实例讲述了C#实现的xml操作类,分享给大家供大家参考,具体如下: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System

发一个ASP的ADODB类代码_ASP CLASS类

反正我现在用这个做了很多站,自己觉得还是满有用的,所以拿出来和大家分享一下.支持三种数据库连接:MSSQL2000,MSSQL2005,ACCESS 三种方法: select_table(sql) 表查询,返回TRUE或FALSE 当SQL语句出错,或空记录时返回FALSE,否则TRUE update_table(SQL) 表更新,包括update,delete 成功执行返回TRUE,否则返回FALSE,updated为执行后影响记录行数. insert_table(sql,table,id_c

PHP中XML操作类XML Library的实现

本文实例讲述了PHP实现的XML操作类.分享给大家供大家参考,具体如下: 这是一个接口程序,需要大量分析解析XML,PHP的xml_parse_into_struct()函数不能直接生成便于使用的数组,而SimpleXML扩展在PHP5中才支持,于是逛逛搜索引擎,在老外的网站上找到了一个不错的PHP XML操作类. 一.用法举例: 1.将XML文件解释成便于使用的数组: <?php include('xml.php');//引用PHP XML操作类 $xml=file_get_contents(

asp.net xml操作方法与xml操作类

程序生成XML文档 这种方式是用 C# 程序生成一个 XML 文件,并将数据放在其中来处理.下面是几种不同的方法实现了同样的目的. 用XmlWriter类编辑数据而实现的简单示例:  代码如下 复制代码 XmlTextWriter xtw = new XmlTextWriter(filePath, Encoding.UTF8); xtw.Formatting = Formatting.Indented; xtw.WriteStartDocument(true); xtw.WriteStartEl

asp数据库操作类

<%'=========================================================================='文件名称:clsDbCtrl.asp'功 能:数据库操作类'作 者:coldstone (coldstone[在]qq.com)'程序版本:v1.0.5'完成时间:2005.09.23'修改时间:2007.10.30'版权声明:可以在任意作品中使用本程序代码,但请保留此版权信息.' 如果你修改了程序中的代码并得到更好的应用,请发送一份给我,谢

asp xml 缓存类_应用技巧

复制代码 代码如下: <% Rem xml缓存类 '-------------------------------------------------------------------- '转载的时候请保留版权信息 '作者:╰⑥月の雨╮ '版本:ver1.0 '本类部分借鉴 walkmanxml数据缓存类,使用更为方便 欢迎各位交流进步 '-------------------------------------------------------------------- Class Xml

asp xml 缓存类

复制代码 代码如下: <% Rem xml缓存类 '-------------------------------------------------------------------- '转载的时候请保留版权信息 '作者:╰⑥月の雨╮ '版本:ver1.0 '本类部分借鉴 walkmanxml数据缓存类,使用更为方便 欢迎各位交流进步 '-------------------------------------------------------------------- Class Xml