用DOM完成XML数据提取示例
2013-04-29侯春英
侯春英
摘 要:XML因其灵活性、适用性及跨平台性成为信息存储和处理的首选方式。XML文档是一种纯文本文件,其存取方式是XML应用过程中的一个关键问题。本文从实际应用角度出发介绍一种用文档对象模型(DOM)对XML数据进行提取操作的实现过程。
关键词:XML;DOM;数据提取
随着网络技术的不断发展,网络数据的存储和提取方式也就成为一个被关注的问题。在许多异构数据库、多服务器和数据存储系统、复杂文件和相对不定结构文件的数据存储中,XML还是倍受青睐。因为以XML存储的方式可以方便地实现平台转换,同时XML也是数据库之间传送数据的首选方法。另外,在数据结构相对不固定的情况下,XML更成为数据存储的理想方式。
获取XML数据的方法有多种,但在大多数据情况下,以DOM(Document Object Model)即文档对象模型来处理XML文件是非常可取的。一般情况下,用DOM对XML文档进行处理过程包括以下几个步骤:
1 创建DOM实例
创建一个DOM实例通常可以采用下述方法:
set [object]=server.createobject(“Microsoft.XMLDOM”)
2 将已建好的XML文档加载进来
(1)在加载XML文档时要设置async属性为False,这样当文档加载完毕,控制权才会返回给调用进程。
(2)加载一个XML文档可以采用下述方法:
[object].load(“文档”)
说明:如XML文档来自于Internet,则其XML文档标识符形式就为http://url。其中:url为要载入XML文档的绝对地址。
3 创建XML文档的元素结点清单
因为所创建XML文档的元素结点清单要保存起来以备使用,所以要先定义一个变量,然后用DOM的getElementsBYTagName()方法创建所加载的XML文档元素的清单,并保存在所定义的变量中:
DIM [Vn]
Set [Vn]= getElementsBYTagName(“元素”)
注:[Vn] 是自己定义的变量;“元素”是指所加载的XML文件的实体元素名称。
4 用循环过程实现对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目录下。