- ·上一篇文章:ASP操作xml--显示xml文件中的所有节点
- ·下一篇文章:asp获取xml中的内容
ASP通过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("
<
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 
我曾经测试过不用数据库,把网站的会员信息,商品数据信息,交易信息,网站定制信息全部存放在三个xml文件中,运行结果十分正常,感觉上比数据库快多了,不过没有作测试,不能确定。 
下面说一下创建,查询,修改等对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 
ASP通过XMLDom在服务器端操作XML文件