APP下载

用DOM完成XML数据提取示例

2013-04-29侯春英

无线互联科技 2013年9期

侯春英

摘 要: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目录下。