对于小数据量,xml文件在检索更新上于ACCESS有很多优势。
我曾经测试过不用数据库,把网站的会员信息,商品数据信息,交易信息,网站定制信息全部存放在三个xml文件中,运行结果十分正常,感觉上比数据库快多了,不过没有作测试,不能确定。
下面说一下创建,查询,修改等对xml操作的主要方法
程序代码
NO.1--建立一个XML数据库data.xml
复制代码 代码如下:
?xml version="1.0"?>
records>
record>
name>caca/name>
qq>154222225/qq>
email>root@3ney.com/email>
/record>
records>
NO.2--建立对象CreateObject
建立data.xml的对象先
set xmldoc=server.createobjcet("microsoft.xmldom")
xmldoc.load(server.mappath("data.xml")
NO.3--选定节点SelectNode
你想操作哪个Node,必须定位到这个节点是不是,先看看这个data.xml有几个Node??
用一个递归函数搞定:
复制代码 代码如下:
getnodes(xmldoc)
sub getnodes(node)
dim i
response.write("br>b>NodeName:/b>"node.nodename"br>b>NodeTypeString:/b>"node.nodetypestring"br>b>NodeValue:/b>"node.nodevalue"br>b>Text:/b>"node.text"br>b>node.childnodes.length:/b>"node.childnodes.length"p>")
if node.childnodes.length>0 then
for i=0 to node.childnodes.length-1
getnodes(node.childnodes(i))
next
end if
end sub
用这个函数后,可以看到这个data.xml有10个Node
这些Node可以很简单的定位:
xmldoc
xmldoc.childnodes(0)
xmldoc.childnodes(1)
xmldoc.childnodes(1).childnodes(0)
xmldoc.childnodes(1).childnodes(0).childnodes(0)
xmldoc.childnodes(1).childnodes(0).childnodes(0).text
xmldoc.childnodes(1).childnodes(0).childnodes(1)
xmldoc.childnodes(1).childnodes(0).childnodes(1).text
xmldoc.childnodes(1).childnodes(0).childnodes(2)
xmldoc.childnodes(1).childnodes(0).childnodes(2).text
是不是定位很简单呀,还有个方法,比如定位name>
xmldoc.selectsinglenode("//name")
NO.4--给节点赋值(修改节点的值)
学会了定位节点,利用其属性,就可以修改或者赋值了
例如,把name>的值caca改为wawa
xmldoc.selectsinglenode("//name").text="wawa"
xmldoc.save(server.mappath("data.xml"))
搞定!
NO.5--创建新的节点CreatenewNode
用createelement或者createnode("","","")
例如:在record下新建个age>,只需要一句就搞定:
xmldoc.selectsinglenode("//record").appendchild(xmldoc.createelement("age>"))
给age>赋值
xmldoc.selectsinglenode("//age").text="20"
xmldoc.save(server.mappath("data.xml"))
搞定!
NO.6--删除一个节点DeleteNode
你必须明确你想删除的这个节点的父节点,以及这个节点的特征
例如:删除qq>节点
xmldoc.selectsinglenode("//record").removechild(xmldoc.selectsinglenode("//qq"))
例如:删除那个name>=caca的record>
xmldoc.selectsinglenode("//records").removechild(xmldoc.selectsinglenode("//record[name='caca']))
xmldoc.save(server.mappath("data.xml"))
搞定!
只有能熟练这6条code,用asp控制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下的许多功能了。
------------------------------------------------------------------------------------------
虽然asp只能简单的操作XML文件,可是对于一般程序开发者来说就已经足够。
之前,XML语言非常的少接触,后来慢慢的,发觉XML在存储数据上有很多的方便。虽然安全性不好(个人认为),可是对于一般的数据存储的确 是一个非常不错的选择。
今天因为在一个网站上需要用到XML,我在这里就做一些总结(后期将会用到):
==============
首先,先整理ASP读取XML文件
default.asp的代码
%
dim node,i,nodecount
set Doc = CreateObject("Microsoft.XMLDOM")
Doc.async = false
Doc.load(Server.MapPath("data.xml"))
set root = Doc.documentElement
set nodeLis = root.childNodes
nodeCount = nodeLis.length
For i=1 to nodeCount
set node = nodeLis.nextNode()
set cost = node.attributes.getNamedItem("cost")
%>
第 %=i%> 条记录:
table width="50%" border="1">
tr>
td width="43" rowspan="2">img src="%=node.selectSingleNode("img").text%>"/>/td>
td width="46">书名/td>
td width="48">出版社/td>
td width="42">价格/td>
/tr>
tr>
td>
%=node.selectSingleNode("name").text%>
/td>
td>
%=node.selectSingleNode("publisher").text%>
/td>
td>
%= cost.text%>
/td>
/tr>
/table>
%
Next
%>
====================
接下来就是Data.xml数据内容
?xml version="1.0" encoding="UTF-8"?>
data>
book cost="56">
name>Dreamweaver/name>
publisher>中国铁路出版社/publisher>
img>img/dw.jpg/img>
/book>
book cost="62">
name>Flash/name>
publisher>中国铁路出版社/publisher>
img>img/flash.jpg/img>
/book>
book cost="48">
name>Firweorks/name>
publisher>中国铁路出版社/publisher>
img>img/fw.jpg/img>
/book>
/data>
您可能感兴趣的文章:- asp下将数据库中的信息存储至XML文件中
- asp access数据库并生成XML文件范例
- Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
- ASP XML操作类代码
- ASP读取XML实例 优酷专辑采集程序 雷锋版
- Asp操作Xml的精炼类,含示例代码
- ASP.NET+XML打造网络硬盘原理分析
- asp xmlhttp下载一句话
- asp.net TreeView与XML三步生成列表树
- Asp 解析 XML并分页显示源码
- ASP.NET中XML转JSON的方法实例
- ASP.net处理XML数据实例浅析
- ASP.NET XmlDocument类详解
- asp.net中XML如何做增删改查操作
- asp控制xml数据库的经典代码