ASP读取XML数据的实现

2009-06-05 03:59吴永光王晓岩
新媒体研究 2009年9期
关键词:方法

吴永光 王晓岩

[摘要]ASP读取XML数据是开发过程中经常遇到的一个难题,具体介绍ASP读取XML数据的实现方法。

[关键词]ASP 读取 XML 方法

中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0510032-01

一、引言

ASP是Web服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的Web服务应用程序,在ASP文件中访问数据库是最常用的操作,而扩展标记语言XML从本质上看就是数据库,它是自描述性的,可交换的,能够以树状或图形结构描述数据。用XML文件存取数据,可以减少额外的服务器负荷,而且XML文件编写、备份和下载都很容易。ASP读取XML数据有多种方法。

二、ASP读取XML数据的方法

(一)创建MSXML对象,并且将XML文档载入DOM。为了在ASP中使用DOM,需要创建一个DOM对象,然后加载XML文档。在XML文档加载之前,需设置validateOnParse属性为true,这可确保被加载的文档为有效的XML文档,从而可以避免后面遇到的各种麻烦,实例代码片段如下:

Set objxml=Server.CreateObject("MicrosoftXMLDOM")

Objxml.validateOnParse=true

Objxml.load(Server.Mappath("example.xml"))

Set objrootelement=objxml.documentElement

(二)使用服务器端嵌入。服务器端嵌入可用于将XML文档代码插入ASP页面,如同处理任何其它基于文本的文档一样。使用这种方法的唯一问题是,XML代码不是在服务器端分析,而是作为XML直接发送至客户端。如果有意在客户端创建一个XML数据岛,这种方法是可以接受的。但在大多数情况下,浏览器忽略这种标记,因此,分析结果将毫无用处。

一个例外情形是,SSI代码是用HTML标记组成的XML文档。例如下列描述一本书籍信息的XML文档book.xml:

<?xml version="1.0"?>

<book bookid="123-4567-892">

<p>title:Breakfast</p>

<p>pubdate:2008-10-20</p>

</book>

这里<book>标记是用户自定义标记,浏览器并不认识,因此,它完全忽略。然而,<p></p>是标准的XML标记,可以被浏览器理解,于是被正确处理。例如,在下列ASP文件代码片段中嵌入了book.xml:

<%@language="vbscript"%>

<body>

<!--#include file="book.xml"-->

</body>

运行这个页面,XML将被无缝嵌入,实现了服务器端嵌入XML数据。

(三)使用FileSystemObject访问XML文档。FileSystemObject是在ASP页面中访问文本文件的标准方法,由于XML文档是基于文本的,所以,可以用它来打开文档。虽然MSXML处理程序有一个用于打开XML文档的load方法,可以代替FileSystemObject来完成相同的任务,但是在有些场合,如没有真正加载文档的条件下,需要使用FileSystemObject来访问XML文档,并执行一个操作,如检查文件中的Attributes。

例如,一个简单的文本搜索程序,简化后的代码如下:

dim fso,file,XMLStr,path

set fso=CreateObject("Scripting.FileSystemObject")

path=server.Mappath("book.xml")

set file=fso.OpenTextFile(path)

XMLStr=file.ReadAll

file.Close

if InStr(XMLStr,"Breakfast")>0 then

Response.write "Text is found!"

else

Response.write "Could not find the text!"

end if

set fso=nothing

(四)在客户端创建数据岛。数据岛是服务器和客户机之间进行数据传递的一种方式。它存在于HTML网页中,是一段XML代码。XML数据岛在HTML中形成了一个数据的集合,通过特定的标签把XML数据直接嵌入到HTML文档中。数据岛有特有的形式,由标记<XML>开始,在开始标记中要有一个ID属性,用于指定该数据岛的名称,最后还要以</XML>结束。在客户端创建数据岛有两种形式,一种为内嵌的数据岛,即直接把XML文档片段嵌入ASP程序,下面代码片段通过一个实例来实现内嵌数据岛:

<xml id="example">

<book bookid="123-4567-892">

<title>Breakfast</title >

<pubdate>2008-10-20</pubdate >

</book>

</xml>

<body>

<table datasrc="# example">

<tr>

<td><span DATAFLD="title"></span></td>

<td><span DATAFLD="pubdate"></span></td>

</tr>

</table>

</body>

如上例所示,用datasrc绑定数据岛的时候,需要在已定义的数据岛名称前加“#”,绑定具体元素时,用DATAFLD就可以了。另一种是外嵌的数据岛,形式为:<xml id="example"src="book.xml"></xml>

外嵌数据岛绑定元素的方法同内嵌数据岛是一样的,只是在定义数据岛的时候,需要指明嵌入的XML文件的路径及名称,具体实现代码从略。

三、总结

本文详细阐述了ASP读取XML数据的四种方法的实现过程,当然,方法不是只有这几种,更多的方法需要我们进一步探讨和实践,这样我们才能更好的利用ASP、XML等相关的技术。

参考文献:

[1]吴洁,XML应用教程,北京:清华大学出版社,2005.12.

[2]丁跃潮等,XML实用教程,北京:北京大学出版社,2006.10.

[3]尚俊杰,网络程序设计-ASP,北京:清华大学出版社,2006.12.

猜你喜欢
方法
用对方法才能瘦
四大方法 教你不再“坐以待病”!
赚钱方法
捕鱼