1.ASP操作xml--显示xml文件中的所有节点
通常是利用数据库来保存数据,但也可以使用xml文件来保存数据。假设xml文件的内容是: test.xml <?xml version="1.0" encoding="gb2312"?> <site> <root> <list> <id>0</id> <name>易搜友</name> <url>http://www.esouy.com</url> <time>2010-01-05</time> </list> <list> <id>1</id> <name>洗车机</name> <url>http://www.xicheshebei.cn</url> <time>2010-01-05 11:11:11</time> </list> </root> </site>
用来显示xml中的内容的asp文件 index.asp <style> body {font-size:12px;} </style> <% strSourceFile = Server.MapPath("./") & "\test.xml" '获取XML文件的路径这里根据你的虚拟目录不同而不同 Set objXML = Server.CreateObject("Microsoft.FreeThreadedXMLDOM") '以自由线程创建一个XML对像 objXML.load(strSourceFile)'把XML文件读入内存 Set objRootsite = objXML.documentElement.selectSingleNode("root") '选取root节点 num=objRootsite.childNodes.length-1 For i=0 To num response.write "网站名:"&objRootsite.childNodes.item(i).childNodes.item(1).text&" <a href=""javascript:delxml("&objRootsite.childNodes.item(i).childNodes.item(0).text&")"">删除</a> <a href=""editxml.asp?id="&objRootsite.childNodes.item(i).childNodes.item(0).text&""">修改</a>" response.write "网址:"&objRootsite.childNodes.item(i).childNodes.item(2).text&"" response.write "添加时间:"&objRootsite.childNodes.item(i).childNodes.item(3).text&"" next %> <script> function delxml(id) { if(!confirm("确定要删除吗?")) return false; location.href='delxml.asp?id='+id; } </script>
注意:index.asp要与test.xml文件放在同一目录下。
2.ASP操作xml--向xml文件中的添加节点
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> 向xml中添加新节点 </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> <style> body {font-size:12px;} </style> </HEAD>
<BODY>
<% addok=request("addok") If addok="" Or IsNull(addok) Then %> <form name="form1" method="post" action="?addok=add"> 网站名:<input type="text" name="site" size="30" >
网 址:<input type="text" name="url" size="40">
<input type="submit" value="提交"> <input type="reset" value="重置"> </form> <% End If If addok="add" then site=request("site") url=request("url") strSourceFile = Server.MapPath("./") & "\test.xml" '获取XML文件的路径这里根据你的虚拟目录不同而不同 Set objXML = Server.CreateObject("Microsoft.XMLDOM") '创建XML对像 objXML.load(strSourceFile) '把XML文件读入内存中 Set objRootlist = objXML.documentElement.selectSingleNode("root") '选取<root>节点 if objRootlist.hasChildNodes then '判断<NewList>是否有子节点(因为如果是每一次<root>是没有子节点的,如果不加判断在第一次运得时就会报错 id = objRootlist.lastchild.firstchild.text+1 '这里获得将要插入子节点的ID号,其ID号为<root>的最后一个子节点(lastchild)的第一个子节点(firstchild) '的ID号加1(这里我们按照关系型数据库的ID号来递增) else '如是没有字子节点则是第一次留言ID号设为1 id=1 end If brstr=chr(13)&chr(10)&chr(9) XMLnode=brstr&"<list>"&vbnewline & _ "<id>"&id&"</id>"&vbnewline & _ "<name>"&site&"</name>"&vbnewline & _ "<url>"&url&"</url>"&vbnewline & _ "<time>"&Replace(Replace(Now(),"上午 ",""),"下午 ","")&"</time>"&vbnewline & _ "</list>"&vbnewline&vbnewline
'根据得到的数据建立XML片段 set objXML2=Server.CreateObject("Microsoft.XMLDOM") '建立一个新XML对像 objXML2.loadXML(XMLnode) '把XML版片段读入内存中 set rootNewNode=objXML2.documentElement '获得objXML2的根节点 objRootlist.appendChild_xss(rootNewNode) '把XML片段插入到test.xml中 objXML.save(strSourceFile) '存储test.xml文件(因为不存储test.xml只在内存中更新了) set objXML=nothing set objXML2=nothing Response.Redirect("index.asp") response.end End If %> </BODY> </HTML>
test.xml中的内容是 <?xml version="1.0" encoding="gb2312"?> <site> <root> <list> <id>0</id> <name>石家庄网站建设</name> <url>http://www.shgcn.com/</url> <time>2010-01-05 10:10:10</time> </list> </root> </site>
3.ASP操作xml--删除xml文件中某个节点
detail.asp?id=157这个页面用来显示xml文件中的所有节点,在每个节点旁边有删除和编辑两个连接,其中删除的代码是: <% id=request("id") if IsNumeric(id)=false or isNull(id) then response.write ("参数不正确,请返回!") response.end end if strSourceFile = Server.MapPath("./") & "\test.xml" '获取XML文件的路径这里根据你的虚拟目录不同而不同 Set objXML = Server.CreateObject("Microsoft.XMLDOM") '创建XML对像 objXML.load(strSourceFile) '把XML文件读入内存中 Set objRootlist = objXML.documentElement.selectSingleNode("root") set rootOldNode=objRootlist.childNodes.item(id) objRootlist.RemoveChild rootOldNode '删除节点 objXML.save(strSourceFile) '存储test.xml文件(因为不存储test.xml只在内存中更新了) set objXML=Nothing set objXML2=Nothing Response.Redirect("index.asp") response.end %>
4.ASP操作xml--修改xml文件中的节点
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> 修改xml内容 </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD>
<BODY> <% id=request("id") if IsNumeric(id)=false or isNull(id) then response.write ("参数不正确,请返回!") response.end end if addok=request("addok") If addok="" Or IsNull(addok) then strSourceFile = Server.MapPath("./") & "\test.xml" '获取XML文件的路径这里根据你的虚拟目录不同而不同 Set objXML = Server.CreateObject("Microsoft.FreeThreadedXMLDOM") '以自由线程创建一个XML对像 objXML.load(strSourceFile)'把XML文件读入内存 Set objRootsite = objXML.documentElement.selectSingleNode("root") id=objRootsite.childNodes.item(id).childNodes.item(0).text site=objRootsite.childNodes.item(id).childNodes.item(1).text url=objRootsite.childNodes.item(id).childNodes.item(2).text %> <form name="form1" method="post" action="?addok=edit&id=<%=id%>"> 网站名:<input type="text" name="site" value="<%=site%>" size="30">
网 址:<input type="text" name="url" value="<%=url%>" size="40">
<input type="submit" value="修改"> <input type="reset" value="重置"> </form> <% End If If addok="edit" Then site=request("site") url=request("url") strSourceFile = Server.MapPath("./") & "\test.xml" '获取XML文件的路径这里根据你的虚拟目录不同而不同 Set objXML = Server.CreateObject("Microsoft.XMLDOM") '创建XML对像 objXML.load(strSourceFile) '把XML文件读入内存中 Set objRootlist = objXML.documentElement.selectSingleNode("root") set rootOldNode=objRootlist.childNodes.item(id) brstr=chr(13)&chr(10)&chr(9) XMLnode=brstr&"<list>"&vbnewline & _ "<id>"&id&"</id>"&vbnewline & _ "<name>"&site&"</name>"&vbnewline & _ "<url>"&url&"</url>"&vbnewline & _ "<time>"&Replace(Replace(Now(),"上午 ",""),"下午 ","")&"</time>"&vbnewline & _ "</list>"&vbnewline&vbnewline '根据得到的数据建立XML片段 set objXML2=Server.CreateObject("Microsoft.XMLDOM") '建立一个新XML对像 objXML2.loadXML(XMLnode) '把XML版片段读入内存中 set rootNewNode=objXML2.documentElement '获得objXML2的根节点 objRootlist.ReplaceChild rootNewNode,rootOldNode '修改test.xml objXML.save(strSourceFile) '存储test.xml文件(因为不存储test.xml只在内存中更新了) set objXML=nothing set objXML2=nothing Response.Redirect("index.asp") response.end
End if %> </BODY> </HTML> |