一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - ASP教程 - ASP XMLDom在服務(wù)器端操作XML文件的主要方法和實(shí)現(xiàn)

ASP XMLDom在服務(wù)器端操作XML文件的主要方法和實(shí)現(xiàn)

2019-09-06 11:18ASP之家 ASP教程

我曾經(jīng)測試過不用數(shù)據(jù)庫,把網(wǎng)站的會(huì)員信息,商品數(shù)據(jù)信息,交易信息,網(wǎng)站定制信息全部存放在三個(gè)xml文件中,運(yùn)行結(jié)果十分正常,感覺上比數(shù)據(jù)庫快多了,不過沒有作測試,不能確定。

對于小數(shù)據(jù)量,xml文件在檢索更新上于ACCESS有很多優(yōu)勢。 

我曾經(jīng)測試過不用數(shù)據(jù)庫,把網(wǎng)站的會(huì)員信息,商品數(shù)據(jù)信息,交易信息,網(wǎng)站定制信息全部存放在三個(gè)xml文件中,運(yùn)行結(jié)果十分正常,感覺上比數(shù)據(jù)庫快多了,不過沒有作測試,不能確定。 

下面說一下創(chuàng)建,查詢,修改等對xml操作的主要方法 

程序代碼 

NO.1--建立一個(gè)XML數(shù)據(jù)庫data.xml 

復(fù)制代碼代碼如下:


<?xml version="1.0"?> 
<records> 
<record> 
<name>caca</name> 
<qq>154222225</qq> 
<email>[email protected]</email> 
</record> 
<records> 


NO.2--建立對象CreateObject 
建立data.xml的對象先 
set xmldoc=server.createobjcet("microsoft.xmldom") 
xmldoc.load(server.mappath("data.xml") 

NO.3--選定節(jié)點(diǎn)SelectNode 
你想操作哪個(gè)Node,必須定位到這個(gè)節(jié)點(diǎn)是不是,先看看這個(gè)data.xml有幾個(gè)Node?? 
用一個(gè)遞歸函數(shù)搞定: 

復(fù)制代碼代碼如下:


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 
用這個(gè)函數(shù)后,可以看到這個(gè)data.xml有10個(gè)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 
是不是定位很簡單呀,還有個(gè)方法,比如定位<name> 
xmldoc.selectsinglenode("//name") 


NO.4--給節(jié)點(diǎn)賦值(修改節(jié)點(diǎn)的值) 
學(xué)會(huì)了定位節(jié)點(diǎn),利用其屬性,就可以修改或者賦值了 
例如,把<name>的值caca改為wawa 
xmldoc.selectsinglenode("//name").text="wawa" 
xmldoc.save(server.mappath("data.xml")) 
搞定! 
NO.5--創(chuàng)建新的節(jié)點(diǎn)CreatenewNode 
用createelement或者createnode("","","") 
例如:在record下新建個(gè)<age>,只需要一句就搞定: 
xmldoc.selectsinglenode("//record").appendchild(xmldoc.createelement("<age>")) 
給<age>賦值 
xmldoc.selectsinglenode("//age").text="20" 
xmldoc.save(server.mappath("data.xml")) 
搞定! 
NO.6--刪除一個(gè)節(jié)點(diǎn)DeleteNode 
你必須明確你想刪除的這個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn),以及這個(gè)節(jié)點(diǎn)的特征 
例如:刪除<qq>節(jié)點(diǎn) 
xmldoc.selectsinglenode("//record").removechild(xmldoc.selectsinglenode("//qq")) 
例如:刪除那個(gè)<name>=caca的<record> 
xmldoc.selectsinglenode("//records").removechild(xmldoc.selectsinglenode("//record[name='caca'])) 
xmldoc.save(server.mappath("data.xml")) 
搞定! 
只有能熟練這6條code,用asp控制xml數(shù)據(jù)庫,也就差不多了... 
======================================================== 

'創(chuàng)建DOM對象 
set objDom=server.CreateObject("MicroSoft.XMLDom") 

'取得xml數(shù)據(jù) 
'方法1 取得xml文件的xml數(shù)據(jù) 
objDom.load("c:\test.xml") 
'方法2 取得xml數(shù)據(jù)串的數(shù)據(jù) 
objDom.loadxml("<people><man name="sd"/></people>") 

'創(chuàng)建一個(gè)節(jié)點(diǎn)對象 
Set Newnode=objDom.CreateElement("people") 
'給這個(gè)節(jié)點(diǎn)赴值 
Newnode.Text="人" 
' 給這個(gè)節(jié)點(diǎn)添加屬性 
Set NewAttribute=objDom.CreateNode("attribute","name","") 
NewAttribute.Text= "張三" 
Newnode.SetAttributeNode NewAttribute 
'給這個(gè)節(jié)點(diǎn)添加子節(jié)點(diǎn) 
Set NewnodeChild=objDom.CreateElement("address") 
Newnode.appendChild NewnodeChild 
'保存這個(gè)節(jié)點(diǎn)對象 
objDom.appendChild Newnode 
objDom.save("c:\test.xml") 

'查找一個(gè)節(jié)點(diǎn)對象 
set objtofind=objdom.documentElement.SelectSingleNode("//people/man") 
'取出這個(gè)節(jié)點(diǎn)對象的 節(jié)點(diǎn)名,節(jié)點(diǎn)值,某個(gè)屬性值,和全部的xml 
nodename=objtofind.nodename 
nodevalue=objtofind.text 
objtofind.GetAttributeNode("name").NodeValue '屬性名為name的屬性值 

'取出一個(gè)屬性節(jié)點(diǎn)對象 
set objattrtofind=objdom.documentElement.SelectSingleNode("//people/man"). GetAttributeNode("name") 
'取出這個(gè)節(jié)點(diǎn)的屬性名,屬性值 
nodeattrname=objattrtofind.nodename 
nodeattrvalue=objattrtofind.nodevalue 

'刪除一個(gè)節(jié)點(diǎn)對象 
set objnode=objdom.documentElement.SelectSingleNode("//people/man") '要?jiǎng)h除的節(jié)點(diǎn) 
set objparentnode=objdom.documentElement.SelectSingleNode("//people") '要?jiǎng)h除的節(jié)點(diǎn)的父節(jié)點(diǎn) 
objparentnode.removeChild objnode 

'取出一個(gè)節(jié)點(diǎn)的字節(jié)點(diǎn)集合 
set objnodes=objdom.documentElement.SelectSingleNode("//people/man").ChildNodes 
遍歷這個(gè)集合 
方法1 
for each element in objnodes 
response.write element.nodename 字節(jié)點(diǎn)名 
response.write element.text 字節(jié)點(diǎn)值 
next 
方法2 
domlength=objnodes.length 
for i = 0 to domlength-1 
response.write objnodes.childnodes(i).nodename 字節(jié)點(diǎn)名 
response.write objnodes.childnodes(i).text 字節(jié)點(diǎn)值 
next 

'取出一個(gè)節(jié)點(diǎn)的屬性集合 
set objnodes=objdom.documentElement.SelectSingleNode("//people/man").GetAttributeNode("name").attributes 
遍歷這個(gè)集合 
for each element in objnodes 
response.write element.nodename 屬性名 
response.write element.nodevalue 屬性值 
next 

等能夠熟練的運(yùn)用xmldom對象來操作xml文件了,就可以享受xmlhttp對象來實(shí)現(xiàn)asp下的許多功能了。 

------------------------------------------------------------------------------------------ 

雖然asp只能簡單的操作XML文件,可是對于一般程序開發(fā)者來說就已經(jīng)足夠。 
之前,XML語言非常的少接觸,后來慢慢的,發(fā)覺XML在存儲(chǔ)數(shù)據(jù)上有很多的方便。雖然安全性不好(個(gè)人認(rèn)為),可是對于一般的數(shù)據(jù)存儲(chǔ)的確 是一個(gè)非常不錯(cuò)的選擇。 
今天因?yàn)樵谝粋€(gè)網(wǎng)站上需要用到XML,我在這里就做一些總結(jié)(后期將會(huì)用到): 
============== 
首先,先整理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">價(jià)格</td> 
</tr> 
<tr> 
<td> 
<%=node.selectSingleNode("name").text%> 
</td> 
<td> 
<%=node.selectSingleNode("publisher").text%> 
</td> 
<td> 
<%= cost.text%> 
</td> 
</tr> 
</table> 
<% 
Next 
%> 
==================== 
接下來就是Data.xml數(shù)據(jù)內(nèi)容 
<?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>

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美女被躁爽死 | 精品国产一区二区三区久久影院 | 女人扒开下面让男人桶爽视频 | 成人精品视频一区二区在线 | 精品日产1区2卡三卡麻豆 | 放荡的女老板bd中文字幕 | 希望影院高清免费观看视频 | 国产欧美成人免费观看 | 亚洲AV福利天堂一区二区三 | 亚州在线| 香蕉在线精品一区二区 | 脱女学小内内摸出水网站免费 | 青草午夜精品视频在线观看 | 高h全肉动漫在线观看免费 高h辣h双处全是肉军婚 | 操操综合网 | 国产在线精品香蕉综合网一区 | 国产日韩欧美在线一二三四 | daring国家队在线观看樱花动漫 | 亚洲精品日韩专区在线观看 | 男人的天堂久久爱 | 日韩精品一区二区三区视频 | 1986葫芦兄弟全集免费观看第十集 | 雪恋电影完整版免费观看 | 午夜精品国产自在现线拍 | 久久囯产精品777蜜桃传媒 | 国内精品中文字幕 | 乖女的嫩奶水h文孕妇 | 亚洲第一区欧美日韩精品 | 亚洲经典 | 日本漫画被黄漫免费动 | 第一次破苞h| 国产亚洲福利一区二区免费看 | 91高清国产视频 | 5x社区发源地最新地址 | 欧美亚洲天堂 | 奇米影视999 | 成人国产在线播放 | 国产精品永久免费视频观看 | 国产成年人视频 | 91噜噜噜噜色 | 久久精品国产视频澳门 |