如何使用ASP訪問XML文件
發表于:2007-09-07來源:作者:點擊數:
標簽:
XML標準正在為越來越多的軟件廠商所接受,Microsoft作為力推XML的廠商之一,為XML的推廣做出了大量的貢獻。它的文檔對象模型(DOM)為XML的存取提供了很多方便使用的方法。 XML和 數據庫 有很多相似之處,它們都是結構化的存儲信息的途徑。數據庫用記錄和字段組
XML標準正在為越來越多的軟件廠商所接受,Microsoft作為力推XML的廠商之一,為XML的推廣做出了大量的貢獻。它的文檔對象模型(DOM)為XML的存取提供了很多方便使用的方法。
XML和
數據庫有很多相似之處,它們都是結構化的存儲信息的途徑。數據庫用記錄和字段組成的表格存儲信息,這樣就允許方便地訪問和搜索。XML文件也可以按照類似的結構化方式來存儲信息。而XML作為一個統一的標準,不會像數據庫系統那樣因為數據庫的不同而造成數據傳遞的困難。XML可以從一種數據庫中取出數據,并將數據上傳到完全不同的數據庫中,例如可以將數據從
服務器A上的
Oracle數據庫傳送給服務器B的SQL數據庫。本文討論如何使用動態服務頁面(Active Server Pages, ASP)將XML文件中的數據寫入數據庫。
本文的實例在
Windows 2000、SQL Server 7.0、IE5.0平臺上
測試通過。
數據說明
本例使用的數據庫ST中的students表結構為:
字段名 字段類型 字段寬度
Name Char 10
Birthday Datetime 8
Score Int 4
XML文件students.xml如下:
Tom
1976-2-15
92
alice
1978-4-18
99
技術說明
使用ASP訪問XML文件有兩種方式:
● 作為文本流的簡單結構文件;
● 作為XML DOM對象。
本文使用的是第二種方式,DOM中常用的方法和屬性有:
1. CreateObject()方法與load()方法
為給出的文件創建DOM,首先要使用CreateObject()方法創建DOM的實例。下面是如何使用ASP在服務器上創建DOM的例子:
set oXMLDOM=server.CreateObject (“Microsoft.XMLDOM”)
XML DOM被創建后,它必須裝入一個XML文件。例如:
oXMLDOM.load(“d:\students.xml”)
創建了DOM對象并載入了XML文件后,就可以使用DOM的方法和屬性來訪問文件了。
2. getElementsByTagName()方法
Document對象的getElementsByTagName方法可以取得所有具有所傳參數指定的名字的后續元素的列表,它返回一個NodeList對象。
例如: set recordlist=oXMLDOM.getElements-
ByTagName(“student”)
3. item()方法
nodeList對象的item()方法將一個索引作為參數,返回這個索引位置上的節點。如果這個索引超出了范圍,那么就返回空值。注意:計數器總是從零開始。
4.Length屬性
nodeList對象的Length屬性返回一個無符號的長整數,為NodeList中節點的個數。
5.Childnodes屬性
Childnodes是node對象的一個屬性,它返回這個節點的所有子節點的NodeList。
例如: recordlist.item(i).childnodes.item(j)
.text指的是第i+1個student的第j+1個子節點的值(因為計數器總是從零開始)。假設i=1,j=0,則recordlist.item(i).childnodes.item(j).text的值為“alice”,即為第2個student的第1個子節點(name)的值。
程序說明
下面的程序訪問XML文件students.xml,并將其數據寫入數據庫ST的students表中。為了使程序盡量簡潔,假設空表students已存在于數據庫ST中。程序的實現步驟如下:
1.連接數據庫ST,打開表students,創建Recordset對象
Set conn=server.CreateObject(“ADODB
.connection”)
conn.Open “dsn=st;uid=sa;pwd=;database=st”
Set myrecord=server.createobject(“ADODB
.Recordset”)
myrecord.open “students”,conn,1,3
2. 創建DOM的實例oXMLDOM
set oXMLDOM=server.CreateObject (“Microsoft.XMLDOM”)
3. 載入XML文件students.xml
oXMLDOM.load(“d:\students.xml”)
4. 使用DOM的getElementsByTagName()方法創建所有student元素的節點清單
set recordlist=oXMLDOM.getElementsByTag-
Name(“student”)
5.使用一個雙重循環將XML文件中的數據讀出,寫入數據庫表中
’用外循環遍歷各student
for i=0 to recordlist.length-1
’用內循環取得每個student的各節點的值,存入數組sp
for j=0 to recordlist.item(i).childnodes
.length-1
sp(j)= recordlist.item(i).childnodes
.item(j).text
next
’在表students中增加一條記錄,并將數組sp的值寫入各字段(注意數據類型的轉變)
myrecord.AddNew
myrecord(“name”).value=sp(1)
myrecord(“birthday”).value=cdate(sp(3))
myrecord(“score”).value=cint(sp(4))
myrecord.Update
next
6.關閉所創建的實例與對象
set oxmldom=nothing
set recordlist=nothing
myrecord.Close
Set myrecord=nothing
小 結
通過本文,我們可以看到XML和數據庫具有很緊密的聯系,ASP在連接XML和數據庫之間起到重要的作用,可以使用XML作為不同數據存儲之間的中介,也可以使用XML本身作為一種數據存儲方式。
XML標準正在為越來越多的軟件廠商所接受,Microsoft作為力推XML的廠商之一,為XML的推廣做出了大量的貢獻。它的文檔對象模型(DOM)為XML的存取提供了很多方便使用的方法。
XML和數據庫有很多相似之處,它們都是結構化的存儲信息的途徑。數據庫用記錄和字段組成的表格存儲信息,這樣就允許方便地訪問和搜索。XML文件也可以按照類似的結構化方式來存儲信息。而XML作為一個統一的標準,不會像數據庫系統那樣因為數據庫的不同而造成數據傳遞的困難。XML可以從一種數據庫中取出數據,并將數據上傳到完全不同的數據庫中,例如可以將數據從服務器A上的Oracle數據庫傳送給服務器B的SQL數據庫。本文討論如何使用動態服務頁面(Active Server Pages, ASP)將XML文件中的數據寫入數據庫。
本文的實例在Windows 2000、SQL Server 7.0、IE5.0平臺上測試通過。
數據說明
本例使用的數據庫ST中的students表結構為:
字段名 字段類型 字段寬度
Name Char 10
Birthday Datetime 8
Score Int 4
XML文件students.xml如下:
Tom
1976-2-15
92
alice
1978-4-18
99
技術說明
使用ASP訪問XML文件有兩種方式:
● 作為文本流的簡單結構文件;
● 作為XML DOM對象。
本文使用的是第二種方式,DOM中常用的方法和屬性有:
1. CreateObject()方法與load()方法
為給出的文件創建DOM,首先要使用CreateObject()方法創建DOM的實例。下面是如何使用ASP在服務器上創建DOM的例子:
set oXMLDOM=server.CreateObject (“Microsoft.XMLDOM”)
XML DOM被創建后,它必須裝入一個XML文件。例如:
oXMLDOM.load(“d:\students.xml”)
創建了DOM對象并載入了XML文件后,就可以使用DOM的方法和屬性來訪問文件了。
2. getElementsByTagName()方法
Document對象的getElementsByTagName方法可以取得所有具有所傳參數指定的名字的后續元素的列表,它返回一個NodeList對象。
例如: set recordlist=oXMLDOM.getElements-
ByTagName(“student”)
3. item()方法
nodeList對象的item()方法將一個索引作為參數,返回這個索引位置上的節點。如果這個索引超出了范圍,那么就返回空值。注意:計數器總是從零開始。
4.Length屬性
nodeList對象的Length屬性返回一個無符號的長整數,為NodeList中節點的個數。
5.Childnodes屬性
Childnodes是node對象的一個屬性,它返回這個節點的所有子節點的NodeList。
例如: recordlist.item(i).childnodes.item(j)
.text指的是第i+1個student的第j+1個子節點的值(因為計數器總是從零開始)。假設i=1,j=0,則recordlist.item(i).childnodes.item(j).text的值為“alice”,即為第2個student的第1個子節點(name)的值。
程序說明
下面的程序訪問XML文件students.xml,并將其數據寫入數據庫ST的students表中。為了使程序盡量簡潔,假設空表students已存在于數據庫ST中。程序的實現步驟如下:
1.連接數據庫ST,打開表students,創建Recordset對象
Set conn=server.CreateObject(“ADODB
.connection”)
conn.Open “dsn=st;uid=sa;pwd=;database=st”
Set myrecord=server.createobject(“ADODB
.Recordset”)
myrecord.open “students”,conn,1,3
2. 創建DOM的實例oXMLDOM
set oXMLDOM=server.CreateObject (“Microsoft.XMLDOM”)
3. 載入XML文件students.xml
oXMLDOM.load(“d:\students.xml”)
4. 使用DOM的getElementsByTagName()方法創建所有student元素的節點清單
set recordlist=oXMLDOM.getElementsByTag-
Name(“student”)
5.使用一個雙重循環將XML文件中的數據讀出,寫入數據庫表中
’用外循環遍歷各student
for i=0 to recordlist.length-1
’用內循環取得每個student的各節點的值,存入數組sp
for j=0 to recordlist.item(i).childnodes
.length-1
sp(j)= recordlist.item(i).childnodes
.item(j).text
next
’在表students中增加一條記錄,并將數組sp的值寫入各字段(注意數據類型的轉變)
myrecord.AddNew
myrecord(“name”).value=sp(1)
myrecord(“birthday”).value=cdate(sp(3))
myrecord(“score”).value=cint(sp(4))
myrecord.Update
next
6.關閉所創建的實例與對象
set oxmldom=nothing
set recordlist=nothing
myrecord.Close
Set myrecord=nothing
小 結
通過本文,我們可以看到XML和數據庫具有很緊密的聯系,ASP在連接XML和數據庫之間起到重要的作用,可以使用XML作為不同數據存儲之間的中介,也可以使用XML本身作為一種數據存儲方式。
|
原文轉自:http://www.anti-gravitydesign.com