Python语言技术文档

微信小程序技术文档

php语言技术文档

jsp语言技术文档

asp语言技术文档

C#/.NET语言技术文档

html5/css技术文档

javascript

点击排行

您现在的位置:首页 > 技术文档 > asp函数/类库

asp_XML操作类代码

来源:中文源码网    浏览:134 次    日期:2024-03-26 23:12:02
【下载文档:  asp_XML操作类代码.txt 】


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 ClassASP通过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(””) ‘创建一个节点对象 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=”

error”&XMLMorntekDocument.parseerror.errorcode&”

” strError=strError&XMLMorntekDocument.parseerror.reason&”
” strError=strError&XMLMorntekDocument.parseerror.url&”
” strError=strError&XMLMorntekDocument.parseerror.line&”
” strError=strError&XMLMorntekDocument.parseerror.filepos&”
” strError=strError&XMLMorntekDocument.parseerror.srcText&”
” 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 %> ____________________ 本文未经测试,文章可行度未知。

相关内容