侯春英
摘 要:XML因其靈活性、適用性及跨平臺性成為信息存儲和處理的首選方式。XML文檔是一種純文本文件,其存取方式是XML應用過程中的一個關鍵問題。本文從實際應用角度出發(fā)介紹一種用文檔對象模型(DOM)對XML數據進行提取操作的實現過程。
關鍵詞:XML;DOM;數據提取
隨著網絡技術的不斷發(fā)展,網絡數據的存儲和提取方式也就成為一個被關注的問題。在許多異構數據庫、多服務器和數據存儲系統(tǒng)、復雜文件和相對不定結構文件的數據存儲中,XML還是倍受青睞。因為以XML存儲的方式可以方便地實現平臺轉換,同時XML也是數據庫之間傳送數據的首選方法。另外,在數據結構相對不固定的情況下,XML更成為數據存儲的理想方式。
獲取XML數據的方法有多種,但在大多數據情況下,以DOM(Document Object Model)即文檔對象模型來處理XML文件是非常可取的。一般情況下,用DOM對XML文檔進行處理過程包括以下幾個步驟:
1 創(chuàng)建DOM實例
創(chuàng)建一個DOM實例通??梢圆捎孟率龇椒ǎ?/p>
set [object]=server.createobject(“Microsoft.XMLDOM”)
2 將已建好的XML文檔加載進來
(1)在加載XML文檔時要設置async屬性為False,這樣當文檔加載完畢,控制權才會返回給調用進程。
(2)加載一個XML文檔可以采用下述方法:
[object].load(“文檔”)
說明:如XML文檔來自于Internet,則其XML文檔標識符形式就為http://url。其中:url為要載入XML文檔的絕對地址。
3 創(chuàng)建XML文檔的元素結點清單
因為所創(chuàng)建XML文檔的元素結點清單要保存起來以備使用,所以要先定義一個變量,然后用DOM的getElementsBYTagName()方法創(chuàng)建所加載的XML文檔元素的清單,并保存在所定義的變量中:
DIM [Vn]
Set [Vn]= getElementsBYTagName(“元素”)
注:[Vn] 是自己定義的變量;“元素”是指所加載的XML文件的實體元素名稱。
4 用循環(huán)過程實現對XML文檔的遍歷及數據的提取
在對XML文檔進行遍歷時,可采用以下的結構方式:
for I=0 TO [Vn].length-1
if <條件> then
for J=0 TO m
response.write [Vn].item(i).childnodes(J).text
next
end if
next
下面來看一下完整的程序:
find.htm文件內容如下:
Find.asp文件內容如下:
<%
dim oXLMDOM
dim recordlist
set oXLMDOM=Server.CreateObject("Microsoft.XMLDOM")
oXLMDOM.async = False
oXLMDOM.load server.mappath("finddata.xml")
set recordlist=oXLMDOM.getElementsByTagNAME("個人資料")
dim bz
bz=0
for i=0 to recordlist.length-1
if recordlist.item(i).firstchild.firstchild.nodevalue=request.form("姓名") then
for j=0 to 5
response.write recordlist.item(i).childnodes(j).text%>
<% next
bz=1
end if
next
if bz=0 then
response.write "對不起,無此人信息!"
end if
%>
說明:此程序中BZ為一個標志變量,其它均如前所述。
finddata.xml文件內容如下:
<?xml version="1.0" encoding="gb2312"?>
<學生資料表>
<個人資料>
<姓名>王小龍姓名
<性別>女性別
<文化程度>高中文化程度
<喜愛顏色>紅色喜愛顏色
<學習目標>高級學習目標
<登錄口令>hcy001登錄口令
個人資料
學生資料表
此程序中存儲著多條個人資料信息,本處只用一條示例。
說明:本程序已在IE瀏覽器上運行通過。運行時可將上述三個文件放在同一個WWW目錄下。