ASP操作XML的类
作者 佚名技术
来源 ASP编程
浏览
发布时间 2012-03-12
可以完成ASP对XML节点的添加、删除、修改、清空。 进行上述操作,根据条件,操作类型包括:仅对第一个符合条件、及全部符合条件二种。 如: ''将第一条件值替换成新值 ''call xml.r_node("/blog/sorts/sort[id=''2'']/name","分lei2") ''将全部条件值替换成新值 ''call xml.r_nodes("/blog/sorts/sort[id=''2'']/name","分lei2") <%
dim xml,xmlfile xmlfile="/Person/3/7/fls975/blog.xml" set xml=new QT_XML_Class Class QT_XML_Class ''Projict : ASP操作XML ''Author : Missde ''Link : www.missde.cn ''Date : 15:25 2007-5-29 private dom,xmlpath,doc Public iserr_ ''初始化类 Private Sub Class_Initialize() Set dom = Server.CreateObject("Microsoft.FreeThreadedXMLDOM") xmlpath = Server.MapPath(xmlfile) If not dom.Load(xmlpath) Then SaveToFile "<?xml version=""1.0"" encoding=""utf-8""?>"&vbcrlf&"<blog>"&vbcrlf&"<sorts>"&vbcrlf&"</sorts>"&vbcrlf&"<blogs>"&vbcrlf&"</blogs>"&vbcrlf&"<re>"&vbcrlf&"</re>"&vbcrlf&"</blog>",xmlpath dom.Load(xmlpath) End If end Sub Private Sub Class_Terminate If IsObject(dom) Then Set dom = Nothing If IsObject(doc) Then Set doc = Nothing End Sub Private Function SaveToFile(ByVal strBody,ByVal SavePath) dim ado Set ado = Server.CreateObject("ADODB.Stream") ado.Open ado.Type = 2 ado.charset = "utf-8" ado.WriteText strBody ado.SaveToFile SavePath,2 ado.Close Set ado = Nothing End Function function d_node(node) iserr_=False set doc=dom.documentElement.selectSingleNode(node) if not doc is nothing then doc.parentNode.removeChild(doc) dom.save(xmlpath) iserr_=True end if set doc=nothing End Function function d_nodes(node) dim i iserr_=False set doc=dom.selectNodes(node) if not doc is nothing then for i=0 to doc.length-1 doc.item(i).parentNode.removeChild(doc.item(i)) next iserr_=True end if dom.save(xmlpath) set doc=nothing End Function function c_node(node) iserr_=False set doc=dom.documentElement.selectSingleNode(node) if not doc is nothing then doc.text="" dom.Save(xmlpath) iserr_=True end if set doc=nothing end function function c_nodes(node) dim i iserr_=False set doc=dom.selectNodes(node) if not doc is nothing then for i=0 to doc.length-1 doc.item(i).text="" next dom.Save(xmlpath) iserr_=True end if set doc=nothing end function function checknode(nodes,build) dim doc2,doc3 dim i,f_node_,n_node,newnode iserr_=True Set doc = dom.documentElement.selectSingleNode(nodes) if doc is nothing then iserr_=False if build then nodes=split(nodes,"/") f_node_="" n_node="" for i=0 to ubound(nodes)-1 if nodes(i)="" then f_node_=f_node_&nodes(i) f_node_=f_node_&"/" n_node=f_node_&nodes(i+1) else f_node_=n_node n_node=f_node_&"/"&nodes(i+1) end if Set doc2 = dom.documentElement.selectSingleNode(f_node_) set doc3 = dom.documentElement.selectSingleNode(n_node) if doc3 is nothing then Set newnode = dom.createElement(nodes(i+1)) newnode.Text="" doc2.AppendChild(newnode) Set newnode=nothing end if set doc2=nothing set doc3=nothing next dom.Save(xmlpath) end if end if set doc=nothing End Function function joinxml(inset_node,xmlstr) dim oldxml,newxml,rootNewNode iserr_=False Set oldXML = Server.CreateObject("Microsoft.XMLDOM") oldXML.load(xmlpath) set doc=oldxml.documentElement.selectSingleNode(inset_node) if not doc is nothing then iserr_=True Set newXML = Server.CreateObject("Microsoft.XMLDOM") newXML.loadXML(xmlstr&vbcrlf) set rootNewNode=newXML.documentElement doc.appendChild(rootNewNode) oldxml.Save(xmlpath) end if set oldXML=nothing set newXML=nothing End Function function r_node(node,newstr) iserr_=False set doc=dom.documentElement.selectSingleNode(node) if not doc is nothing then doc.text=newstr iserr_=True end if set doc=nothing dom.Save(xmlpath) End Function function r_nodes(node,newstr) dim i iserr_=False set doc=dom.selectNodes(node) if not doc is nothing then for i=0 to doc.length-1 doc.item(i).text=newstr next iserr_=True end if set doc=nothing dom.Save(xmlpath) End Function function replace_node(node,newstr) call add_node(node,newstr,0) End Function function add_node(node,newstr,num) set doc=dom.selectNodes(node) if not doc is nothing then if doc.length >=num then call d_node(node) end if end if set doc=nothing call joinxml(left(node,instrrev(node,"/")-1),newstr) End Function function f_node(node) dim getnode set doc=dom.documentElement.selectSingleNode(node) if not doc is nothing then iserr_=True getnode=doc.Text else getnode="" iserr_=False end if set doc=nothing f_node=getnode end function function count(node) dim nodenum nodenum=array(0,0,"") iserr_=False set doc=dom.selectNodes(node) if not doc is nothing then nodenum(0)=doc.length nodenum(2)=doc.item(0).xml if doc.item(0).hasChildNodes() then nodenum(1)=doc.item(0).childNodes.length end if iserr_=True end if count=nodenum end function function id_(str) id_=String(10-len(str),"0") end function function now_(dd) dim m,d,h,mm if not isdate(dd) then d=now() dd=cdate(dd) m=month(dd) d=day(dd) h=hour(dd) mm=Minute(dd) if m<10 then m="0"&m if d<10 then d="0"&d if h<10 then h="0"&h if mm<10 then mm="0"&mm now_=year(dd)&"-"&m&"-"&d&" "&h&":"&mm&":"&Second(dd) end function end class %> |
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇:
一些语言的标识符的命名规则
下一篇:
ASP实例:是否支持XmlHttp组件的判断
关于
ASP操作XML的类
的所有评论