XML 在 ASP 环境下的应用

葵花QQ89191757

葵花QQ89191757

2016-02-19 17:49

下面是个XML 在 ASP 环境下的应用教程,撑握了其技术要点,学起来就简单多了。赶紧跟着图老师小编一起来看看吧!

  XML被誉为未来Web的生命所在。本文介绍如何在服务器端利用新的XML文档对象模型(DOM),通过ASP程序解析和应用XML数据。

  一、文档对象模型

  在服务器上解析和应用XML的能力为开发者打开了一个全新的世界。随着XML应用的日益广泛,在服务器上处理XML也变得更加重要。本文示范ASP应用在服务器端的XML文档处理过程,使用的XML例子是一个新闻文档。我们将介绍如何编写一个显示新闻文档日期和新闻数量的简单ASP页面,以及如何在ASP页面中显示新闻标题和相应的URL。

  文档对象模型即Document Object Model,简称DOM。IE 5.0的XML文档对象模型提供了对W3C DOM核心规范(Level 1)所描述的编程接口的完整支持,同时它还支持一系列XML相关技术,比如XSL、XSL模式匹配、名称空间、数据类型等。DOM是XML解析器所导出的最基本的文档模型,它将XML文档描述为一个很容易导航和使用的树形结构。

  W3C的DOM核心规范定义了两组DOM编程接口。第一组接口是编写处理和使用XML文档的应用时所必需的,第二组接口辅助开发者更轻松地处理XML文档。提供第二组接口只是为了方便,对于XML应用来说它们并不是必需的。

  在ASP应用中,要在服务器上应用DOM是相当简单的,但服务器上必须安装IE 5.0,这是因为DOM的许多支持组件都是由IE提供的。安装好IE之后,只要在ASP应用中用类似下面的代码就可以创建DOM对象:

% Set objXML = Server.CreateObject("Microsoft.XMLDOM") %

  二、在服务器上处理XML(1)

  在服务器上创建了DOM对象之后,我们既可以自己构造新的XML文档,也可以装载一个现有的文档。如果是装载现有文档,还可以选择是读取XML文本字符串,还是打开XML文档并装载其内容。在本文的例子中,我们假定服务器上已经有了一个最近新闻的XML文档mostRecentScriptingNews.xml。在装载XML文档之前,我们应该把DOM对象的async属性设置成false,这是告诉DOM对象装载XML文档不是异步进行。这一点非常重要,因为读入XML文档之后我们将立即开始使用它,如果此时文档还没有全部装载完毕,试图访问它就会引发错误。

%Set objXML = Server.CreateObject("Microsoft.XMLDOM")objXML.async = FalseobjXML.Load (Server.MapPath("mostRecentScriptingNews.xml"))%

  下面是我们装载的XML文档mostRecentScriptingNews.xml:

?xml version="1.0" encoding="gb2312" ?!DOCTYPE scriptingNews SYSTEM"http://www.scripting.com/dtd/scriptingNews.dtd"scriptingNewsheadercopyright版权所有/copyrightscriptingNewsVersion1.0/scriptingNewsVersionpubDateWed, 03 Mar 1999 08:00:00 GMT/pubDatelastBuildDateThu, 04 Mar 1999 03:37:03 GMT/lastBuildDate/headeritemtextLinux汽车立体声系统/textlinkurlhttp://www.wired.com/news/news/technology/story/18236.html/urllinetext汽车立体声系统/linetext/link/item...item

  text据News.com,HP将以租用方式提供存储和计算服务。

/textlinkurlhttp://www.news.com/News/Item/0,4,33202,00.html?st.ne.fd.mdh/urllinetext摘自News.com/linetext/link/item/scriptingNews

  DOM模型的parseError对象包含了最后出现的解析错误信息,这个错误对象对于ASP页面调试和错误控制是很有用的。文档装载完成后,在继续其他操作之前检查parseError对象看看是否存在错误是一种好习惯:

%If objXML.parseError.errorCode  0 Then&single; 处理错误End If%

  parseError对象提供了有关错误的丰富而宝贵的信息: parseError对象的属性说明 errorCode 错误代码 filepos 出现错误的绝对文件位置 Line 出现错误行的行号 linepos 出现错误的字符在该行中的位置 reason 错误原因 srcText 出现错误的数据 URL 出错XML文档的URL

  在本例中,XML文档引用了一个DTD(Document Type Definition,文档类型定义)文件,parseError在此具有更重要的意义。在这里,如果要求不出现错误,那么XML文档不仅必须格式良好(Well formed),而且它还必须对于指定DTD定义来说合法。装载XML文档之后总是检查一下parseError对象是一个好的编程习惯。

  二、在服务器上处理XML(2)

  现在DOM对象中已经有了一个格式良好的、合法的文档,我们来看看这个文档里面有些什么。DOM提供许多精确分析文档内容的方法。由于DOM将文档内容描述成一棵嵌套节点所组成的树(每个节点由一个元素及其所有子元素构成),因此处理XML数据实际上归结为处理一系列的节点对象。下面我们将用getElementsByTagName方法从文档获得元素(或节点)。

  我们的第一个目标是找出新闻的发布日期。分析DTD文件,我们知道发布日期放在pubDate节点。访问该节点内容的一种比较简单的方法是,首先创建一个XML文档内所有节点的列表对象,然后用循环遍历这个列表直至找到pubDate节点。由于DTD规定了pubDate节点不能包含任何子节点,我们可以通过text属性直接得到节点的内容。

%Set objXML = Server.CreateObject("Microsoft.XMLDOM")Set objLst = Server.CreateObject("Microsoft.XMLDOM")objXML.async = FalseobjXML.Load (Server.MapPath("mostRecentScriptingNews.xml"))If objXML.parseError.errorCode  0 Then&single; 处理错误End IfSet objLst = objXML.getElementsByTagName("*")For i = 0 to (objLst.length ?1)If objLst.item(i).nodeName = "pubDate" ThenStrDate = objLst.item(i).textExit ForEnd IfNext%

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

  注意在上面的代码中我们以*作为getElementsByTagName的参数,此时getElementsByTagName将返回文档中所有元素(或节点)的一个列表。由于我们已经有了DTD,可以直接从DTD获知pubDate的正确位置,但象上例所做的那样通过循环遍历文档也是一种高效的方法,因为节点列表是一个集合。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

  现在我们得到了新闻的发布日期,下面我们来看看如何计算文档中的新闻数量。从文档的DTD定义我们知道新闻存放在item节点,文档中的每个item节点对应一则新闻。显然,我们可以使用类似上例的另一个循环,在循环内每次遇到item节点就把计数器加1。不过我们还有一种更好的提取该信息的方法,这要用到DOM提供的另外一个方法。

  象上例一样,我们所要做的是创建一个包含全部item节点的列表对象,然后通过length属性得到节点列表对象中的节点数量,从而也就得到了文档中新闻的数量:

%Set objLst = objXML.getElementsByTagName("item")strNoOfHeadlines = objLst.Length%

  很多时候我们要在ASP页面中显示来自XML文档的一些信息。下面这个例子显示了如何通过遍历新闻节点列表,在ASP页面中显示新闻及其URL。

%Set objXML = Server.CreateObject("Microsoft.XMLDOM")Set objLst = Server.CreateObject("Microsoft.XMLDOM")Set objHdl = Server.CreateObject("Microsoft.XMLDOM")objXML.async = FalseobjXML.Load (Server.MapPath("mostRecentScriptingNews.xml"))If objXML.parseError.errorCode  0 Then&single; 处理错误End IfSet objLst = objXML.getElementsByTagName("item")noOfHeadlines = objLst.length%HTMLBODYH1新闻/H1%For i = 0 To (noOfHeadlines ?1)Set objHdl = objLst.item(i)Response.Write("a href=""" & _objHdl.childNodes(1).childNodes(0).text & _"""" & objHdl.childNodes(0).text & _"/abr")Next%/BODY/HTML

  结束语:只要对XML文档的结构有一个基本了解,再利用DOM的强大功能,我们就可以方便地在ASP应用服务器端解析XML文档,从解析结果中选择合适的内容发送给客户端。这是一种浏览器无关的方法,适用于几乎所有的Web浏览器。

展开更多 50%)
分享

猜你喜欢

XML 在 ASP 环境下的应用

Web开发
XML 在 ASP 环境下的应用

XML教程(3)--CSS在xml中的应用

Web开发
XML教程(3)--CSS在xml中的应用

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

XML在语音合成中的应用

Web开发
XML在语音合成中的应用

XML在语音中的应用(二)

Web开发
XML在语音中的应用(二)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

XML在语音中的应用(一)

Web开发
XML在语音中的应用(一)

在Linux环境下安装JSP

Java JAVA基础
在Linux环境下安装JSP

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Delphi 简单数据库应用的创建及MASTAPP介绍

Delphi 简单数据库应用的创建及MASTAPP介绍

Delphi 拖放编程

Delphi 拖放编程
下拉加载更多内容 ↓