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

等能夠熟練的運用xmldom對象來操作xml文件了,就可以享
受xmlhttp對象來實現asp下的許多功能了。


re:[轉]ASP通過XMLDom在服務器端操作XML文件的主要方法和實現
飛飛,你怎麼不介紹一下@的用法,沒了這個,很多事不方便。
xml,有人也稱之爲數據壓縮技術,顧名思義,xml是可以充當數據庫來用。
所以,我們可以把xml看成是“小型的數據庫”。爲什麼說是小型呢?因爲xml本身的功能及應用方便,與數據庫還是存在着一定的差別。那我們爲什麼要使用xml呢?因爲,有時候我們的一些應用程序雖然進行數據存取,但是,如果使用數據庫的話,顯行有些不夠靈活,方便。這個時候,我們就應該結合xml來使用。
xml既然可以看成是數據庫,那它的第一步工作就當然是創建鏈接對象了。(以ASP+xml爲例)
創建方法同鏈接數據庫一樣,用server.createobject爲創建。
方法如下:
set xmlDoc= Server.CreateObject("microsoft.xmldom")
xmlDoc.async=false
xmldata=數據源絕對路徑
xmlDoc.load xmldata '這裏使用load方法進行鏈接

既於xml的數據格式是比較人性化的,可以由於人爲或其它的原因,引起數據格式不合法,這時如果繼續使用的話,會引起程序出程,這樣,我們往往在創建好鏈接對象後進行數據格式驗證。
方法如下:
if xmlDoc.parseError.errorCode<>0 then
....錯誤處理



<%
'----------------------------------------------------------------
'程序簡介: 完成asp語言對XML文檔中指定節點文本的增加、刪除、修改、查看
'入口參數: 無
'出口參數: 無
'------------------------------------------------
'函數名字:ConnectXml()
'入口參數: filename 需要連接或打開的xml文件名
'出口參數: 無
'返回值 :ConnectXml=0,XMLMorntekDocument就是一個成功裝載XML文檔的對象了。
' ConnectXml<>0,則打印錯誤信息strError
'------------------------------------------------
dim XMLMorntekDocument

function ConnectXml(filename)
dim strSourceFile
strSourceFile = Server.MapPath(filename)
Set XMLMorntekDocument = Server.CreateObject("Microsoft.XMLDOM")
XMLMorntekDocument.async = false
XMLMorntekDocument.load(strSourceFile)
ConnectXml=XMLMorntekDocument.parseerror.errorcode
if XMLMorntekDocument.parseerror.errorcode<>0 then
strError="<h2>error"&XMLMorntekDocument.parseerror.errorcode&"</h2>"
strError=strError&XMLMorntekDocument.parseerror.reason&"<br>"
strError=strError&XMLMorntekDocument.parseerror.url&"<br>"
strError=strError&XMLMorntekDocument.parseerror.line&"<br>"
strError=strError&XMLMorntekDocument.parseerror.filepos&"<br>"
strError=strError&XMLMorntekDocument.parseerror.srcText&"<br>"
response.write strError
end if
end function

'------------------------------------------------
'函數名字:CloseXml()
'入口參數: 無
'出口參數: 無
'------------------------------------------------
function CloseXml(XMLMorntekDocument)
if IsObject(XMLMorntekDocument) then
set XMLMorntekDocument=nothing
end if
end function


'------------------------------------------------
'函數名字:SelectXmlNodeText(elementname)
'入口參數: elementname 元素的名字
'出口參數: 無
'------------------------------------------------
function SelectXmlNodeText(elementname)
elementname="//"&elementname
temp=XMLMorntekDocument.selectSingleNode(elementname).text
selectXmlNodeText= server.htmlencode(temp)

end function

'------------------------------------------------
'函數名字:InsertXmlNodeText(befelementname,elementname,elementtext)
'入口參數: elementname 插入的元素的名字
' befelementname在此元素的名字前面插入元素
' elementtext 插入的元素的文本
'出口參數: 無
'------------------------------------------------
function InsertXmlNodeText(befelementname,elementname,elementtext)
dim befelement,element
set befelement=XMLMorntekDocument.selectSingleNode("//"&befelementname)
set element= XMLMorntekDocument.createelement(elementname)
befelement.insertBefore element,befelement.firstchild
element.text=elementtext
end function

'------------------------------------------------
'函數名字:UpdateXmlNodeText(elementname,newelementtext)
'入口參數: elementname 元素的名字
' newelementtext元素的新文本
'出口參數: 無
'------------------------------------------------
function UpdateXmlNodeText(elementname,newelementtext)
dim element
set element=XMLMorntekDocument.selectSingleNode("//"&elementname)
element.text=newelementtext
end function

'------------------------------------------------
'函數名字:DeleteXmlNodeText(elementname)
'入口參數: elementname 元素的名字
'出口參數: 無
'------------------------------------------------
function DeleteXmlNodeText(elementname)
XMLMorntekDocument.selectSingleNode("//"&elementname).text =""
end function
%>

http://www.4h4.cn/myblog/article.asp?id=25

發佈了1 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章