Asp解析(操作)xml类(xmldom)
<% 'Asp解析Xml类 '--------------类属性------------------- 'let filename 设置xml名称(路径) +++必须+++++ 'language 设置xml的语言类型 '-------------类公共方法---------------- 'loadfile 加载xml 'nodeAdd(parentnode,childnode,nodetext) 添加节点 'attrAdd(parentnode,attrname,attrtext) '添加属性 'getnodename(nodepath,attrname,attrvalue) '获得节点名称 'getnodevalue(nodepath,attrname,attrvalue) '获得节点内容 'modifynodevalue(nodepath,newtext,attrname,attrvalue)'修改节点内容 'getnodeattrlength(nodepath,attrname,attrname_,attrvalue_)'获得节点属性个数 'getnodeattrvalue(nodepath,attrname,attrname_,attrvalue_) '获得节点属性值 'modifynodeattrvalue(nodepath,attrname,newtext,attrname_,attrvalue_)'修改节点属性值 'delnode(parentnodepath,parentnodeattrname,parentnodeattrvalue,childnodepath,childnodeattrname,childnodeattrvalue)'删除节点 'getchildlength(nodename,attrname,attrvalue)'获得节点长度 ' ' ' ' ' ' class cls_xml private sfilename private sxmlfile private sobjxml private slanguage property let filename(filename_) sfilename=filename_ end property property get filename filename=sfilename end property property let language(language_) slanguage = language_ end property property get language language=slanguage end property private sub class_initialize() sfilename="" sxmlfile="" language = "utf-8" sobjxml=null end sub
private sub class_terminate() sobjxml.close set sobjxml=nothing end sub
'**************************************************** '函数名:loadfile '作 用:加载xml文件 '参 数:无 '返回值:无 '**************************************************** public function loadfile()'读取xml文件 sxmlfile=server.MapPath(filename) set sobjxml=server.CreateObject("msxml2.domdocument") sobjxml.load(sxmlfile) sobjxml.async=false if sobjxml.parseError.ErrorCode = 0 then loadfile=true else createfile end if end function '**************************************************** '函数名:nodeAdd '作 用:添加节点 '参 数:parentnode 父节点路径 ' childnode 子节点 ' nodetext 节点名称 '返回值:无 '**************************************************** public sub nodeAdd(parentnode,childnode,nodetext)'添加节点 on error resume next Dim Child if parentnode="" then sobjxml.appendchild (sobjxml.createElement(childnode)) else set child=sobjxml.createElement(childnode) child.text=nodetext sobjxml.selectsinglenode(parentnode).appendchild child end if If Err Then response.Write("向指定节点添加数据失败!<br />"&Err.Description):Exit sub savefile end sub '**************************************************** '函数名:attrAdd '作 用:添加属性 '参 数:parentnode 父节点路径 ' attrname 属性名称 ' attrtext 属性值 '返回值:无 '**************************************************** public sub attrAdd(parentnode,attrname,attrtext)'添加属性 on error resume next Dim sattribute set sattribute=sobjxml.createNode(2,attrname,"") sattribute.text=attrtext if parentnode="" then sobjxml.documentElement.setattributenode sattribute else sobjxml.documentElement.selectsinglenode(parentnode).setattributenode sattribute end if If Err Then response.Write("添加/修改指定节点的属性失败!<br />"&Err.Description):Exit sub savefile end sub '**************************************************** '函数名:getnodename '作 用:获得节点名称 '参 数:nodepath 父节点路径 ' attrname 属性名称 ' attrvalue 属性值 '返回值:无 '**************************************************** public function getnodename(nodepath,attrname,attrvalue)'获得节点名称 on error resume next getnodename = getnode(nodepath,attrname,attrvalue).nodename If Err Then response.Write("获取"""&nodepath&"""节点名称失败!"&Err.Description):Exit function end function '**************************************************** '函数名:getnodevalue '作 用:获得节点内容 '参 数:nodepath 父节点路径 ' attrname 属性名称 ' attrvalue 属性值 '返回值:无 '**************************************************** public function getnodevalue(nodepath,attrname,attrvalue)'获得节点内容 on error resume next getnodevalue=getnode(nodepath,attrname,attrvalue).text If Err Then response.Write("获取"""&nodepath&"""节点内容失败!"&Err.Description):Exit function end function '**************************************************** '函数名:modifynodevalue '作 用:获得节点内容 '参 数:nodepath 父节点路径 ' newtext 节点的新内容 ' attrname 属性名称 ' attrvalue 属性值 '返回值:无 '**************************************************** public sub modifynodevalue(nodepath,newtext,attrname,attrvalue)'修改节点内容 on error resume next dim newnode set newnode=getnode(nodepath,attrname,attrvalue) newnode.text=newtext savefile If Err Then response.Write("修改"""&nodepath&"""节点内容失败!"&Err.Description):Exit sub end sub '**************************************************** '函数名:getnodeattrlength '作 用:获得节点属性个数 '参 数:nodepath 父节点路径 ' attrname 属性名称 ' attrname_ 参考属性名称 ' attrvalue_ 参考属性值 '返回值:无 '**************************************************** public function getnodeattrlength(nodepath,attrname,attrname_,attrvalue_)'获得节点属性个数 getnodeattrlength=getnode(nodepath,attrname_,attrvalue_).attributes.length end function '**************************************************** '函数名:getnodeattrvalue '作 用:获得节点属性值 '参 数:nodepath 父节点路径 ' attrname 属性名称 ' attrname_ 参考属性名称 ' attrvalue_ 参考属性值 '返回值:无 '**************************************************** public function getnodeattrvalue(nodepath,attrname,attrname_,attrvalue_)'获得节点属性值 on error resume next getnodeattrvalue=getnode(nodepath,attrname_,attrvalue_).getattributenode(attrname).nodevalue If Err Then response.Write("获得"""&nodepath&"""节点点属性值失败!"&Err.Description):Exit function end function '**************************************************** '函数名:modifynodeattrvalue '作 用:修改节点属性值 '参 数:nodepath 父节点路径 ' attrname 属性名称 ' newtext 新的属性值 ' attrname_ 参考属性名称 ' attrvalue_ 参考属性值 '返回值:无 '**************************************************** public sub modifynodeattrvalue(nodepath,attrname,newtext,attrname_,attrvalue_)'修改节点属性值 on error resume next Dim newattr set newattr=getnode(nodepath,attrname_,attrvalue_).getattributenode(attrname) newattr.text=newtext savefile If Err Then response.Write("修改"""&nodepath&"""节点属性值失败!"&Err.Description):Exit sub end sub '**************************************************** '函数名:delnode '作 用:删除节点 '参 数:parentnodepath 父节点路径 ' parentnodeattrname 父节点属性名称 ' parentnodeattrvalue 父节点属性值 ' childnodepath 子节点路径 ' childnodeattrname 子节点属性名称 ' childnodeattrvalue 子节点属性值 '返回值:无 '**************************************************** public sub delnode(parentnodepath,parentnodeattrname,parentnodeattrvalue,childnodepath,childnodeattrname,childnodeattrvalue)'删除节点 on error resume next Dim parentnode,childnode if parentnodepath="" then set parentnode=sobjxml.documentElement else set parentnode=getnode(parentnodepath,parentnodeattrname,parentnodeattrvalue) end if set childnode=getnode(childnodepath,childnodeattrname,childnodeattrvalue) parentnode.removechild childnode savefile If Err Then response.Write("删除"""&nodepath&"""节点失败!"&Err.Description):Exit sub end sub '**************************************************** '函数名:getchildlength '作 用:获得节点长度 '参 数:nodename 父节点路径 ' attrname 父节点属性名称 ' attrvalue 父节点属性值 '返回值:无 '**************************************************** public function getchildlength(nodename,attrname,attrvalue)'获得节点长度 if nodename="" then getchildlength=sobjxml.documentElement.childnodes.length else getchildlength=getnode(nodename,attrname,attrvalue).childnodes.length end if end function '---------------------------------------------------- '-----------------以下为私有函数----------------------- '---------------------------------------------------- '**************************************************** '函数名:getnode '作 用:获得节点对象 '参 数:nodepath 父节点路径 ' attrname 父节点属性名称 ' attrvalue 父节点属性值 '返回值:无 '**************************************************** private function getnode(nodepath,attrname,attrvalue)'获得节点对象 on error resume next if attrname="" then set getnode=sobjxml.documentElement.selectsinglenode(nodepath) else set getnode=sobjxml.documentElement.selectsinglenode("//"&nodepath&"[@"&attrname&"='"&attrvalue&"']") end if If Err Then response.Write("获取"""&nodepath&"""节点失败!"&Err.Description):Exit function end function '**************************************************** '函数名:createfile '作 用:创建xml文件 '参 数: '返回值:无 '**************************************************** private sub createfile()'创建xml文件 Dim oPI Set oPI=sobjXML.createProcessingInstruction("xml", "version=""1.0"" encoding="""&language&"""") sobjXML.insertBefore oPI,sobjXML.documentElement savefile end sub private sub savefile()'保存文件 sobjxml.save(sxmlfile) end sub end class Dim Xml Set xml = new cls_xml xml.filename = "1.xml" xml.loadfile response.Write(xml.getnodeattrlength("units/unit","name","","")) Response.Write("<br />") Dim length ,i length = xml.getchildlength("units","","") for i = 0 to length-1 Response.Write("单位:") Response.Write(xml.getnodeattrvalue("units/unit["&i&"]","name","","")) Response.Write("||Id:") Response.Write(xml.getnodeattrvalue("units/unit["&i&"]","id","","")) response.Write("<br />") next %>
相关手册下载:http://www.ffasp.com/content.asp?newsid=250
实例请下载下面的压缩包:
|