在ASP中使用XML_第1页
在ASP中使用XML_第2页
在ASP中使用XML_第3页
在ASP中使用XML_第4页
在ASP中使用XML_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2006-10计算机网络基础(第二版) 杜煜Page 1第第14章章 在在ASP.NET中使用中使用XML本章主要内容本章主要内容14.1 XML介绍介绍14.2 基于流的基于流的XML处理处理14.3 内存中的内存中的XML处理处理14.4 使用使用LINQ to XML转换转换XML14.5 使用使用XSLT转换转换XML14.6 XML与与DataSet的交互的交互14.1 XML介绍介绍XML主要应用在以下几个场合中。主要应用在以下几个场合中。需要处理已经保存在需要处理已经保存在XML中的数据时。当需要与中的数据时。当需要与一个现存的使用了特定一个现存的使用了特定XML的应用程序交换数

2、据的应用程序交换数据时,就需要使用时,就需要使用XML。希望用希望用XML保存数据并为未来可能的整合做好准保存数据并为未来可能的整合做好准备时。使用备时。使用XML,可使第三方应用程序读取这些,可使第三方应用程序读取这些数据。数据。希望使用依赖于希望使用依赖于XML的技术时。例如,的技术时。例如,Web服务服务使用各种建立在使用各种建立在XML上的标准。上的标准。XML的设计目标是符合的设计目标是符合W3C标准规范,该规范是标准规范,该规范是由由W3C(World Wide Web Consortium)定义的一组定义的一组指南,用于以纯文本的形式描述结构化数据。和指南,用于以纯文本的形式描述

3、结构化数据。和HTML类似,类似,XML是一种基于尖括号间标签的标是一种基于尖括号间标签的标记语言。和记语言。和HTML不同的是,不同的是, XML没有一组固定没有一组固定的标签。相反,的标签。相反,XML是一种可用于创建其他标记是一种可用于创建其他标记语言的元语言。也就是说,语言的元语言。也就是说,XML建立用于命名和建立用于命名和元素排列的简单规则,它允许用自定义的元素创建元素排列的简单规则,它允许用自定义的元素创建自己的数据格式。自己的数据格式。架构文档需要定义的是符合用户数据类型的逻辑规则,架构文档需要定义的是符合用户数据类型的逻辑规则,它们包括以下几项。它们包括以下几项。文档词汇:它

4、定义了哪些元素或特性的名称可以在文档词汇:它定义了哪些元素或特性的名称可以在XML文档中使用。文档中使用。文档结构:它定义了标签的放置位置,还包括一些指文档结构:它定义了标签的放置位置,还包括一些指定某些标签必须放在其他标签之前、之后或之中规则,定某些标签必须放在其他标签之前、之后或之中规则,还可以指定某个元素可以出现的次数。还可以指定某个元素可以出现的次数。支持的数据类型:这允许定义数据是普通文本,或者支持的数据类型:这允许定义数据是普通文本,或者必须是可解析的数值数据、日期信息等。必须是可解析的数值数据、日期信息等。允许的数据范围:这允许将数值限制在某个范围内、允许的数据范围:这允许将数值

5、限制在某个范围内、将文本限制在某个特定的长度内、强迫正则表达式模式将文本限制在某个特定的长度内、强迫正则表达式模式匹配,或者限制只能是某些特定的值。匹配,或者限制只能是某些特定的值。14.2 基于流的基于流的XML处理处理.NET Framework 允许用户使用允许用户使用System.xml命名空命名空间(以及其他以间(以及其他以System.Xml开头的命名空间)中的开头的命名空间)中的一组类来操作一组类来操作XML数据。此外,读写数据。此外,读写XML最常用最常用的方法是使用两个基于流的类:的方法是使用两个基于流的类:XMLTextReader和和XMLTextWriter。如果。如果

6、XML文件非常大,甚至一文件非常大,甚至一次把整个文档都加载到内存里不太实际时,这些类次把整个文档都加载到内存里不太实际时,这些类就非常不必要了。它们对简单的就非常不必要了。它们对简单的XML处理也非常处理也非常有效。有效。.NET Framework通过两种方式把通过两种方式把XML数数据写入文件。据写入文件。在内存中使用在内存中使用XmlDocument或或XDocument类创建文档,结束时把它写入类创建文档,结束时把它写入文件。文件。用用XmlTextWriter直接把文档写入流,在直接把文档写入流,在写数据时会逐个节点输出数据。写数据时会逐个节点输出数据。写写XML文件实例文件实例下

7、面以一个具体实例介绍如何使用下面以一个具体实例介绍如何使用XmlTextWriter创建一个格式良好的创建一个格式良好的XML文件文件 .具体实现请参考源代码下具体实现请参考源代码下ch14_2网站网站中的中的WriteAndReadXml.aspx文件。文件。.NET Framework通过两种方式读取通过两种方式读取XML数据。数据。在内存中使用在内存中使用XmlDocument、XPathNavigator或或XDocument类一次性将类一次性将文档加载到内存中。这文档加载到内存中。这3个类中,只有个类中,只有XPathNavigator类是只读的。类是只读的。用用XmlTextRea

8、der类(是基于流的读取器)类(是基于流的读取器)每次读取文档的一个节点。每次读取文档的一个节点。读取读取XML文件实例文件实例1具体实现请参考源代码下具体实现请参考源代码下ch14_2网站中的网站中的WriteAndReadXml.aspx文件。文件。 读取读取XML文件实例文件实例2以上读文件的方法虽然很简单,但效率不以上读文件的方法虽然很简单,但效率不高,所有节点都要遍历一次。下面看一个高,所有节点都要遍历一次。下面看一个高效读取高效读取XML文件的实例。具体实现请参文件的实例。具体实现请参考源代码下考源代码下ch14_2网站中的网站中的ReadXmlEfficient.aspx文件。文

9、件。 14.3 内存中的内存中的XML处理处理对内存中对内存中XML的处理则更加方便,如下的类都支的处理则更加方便,如下的类都支持对持对XML文件内容的读取和导航。文件内容的读取和导航。XmlDocument:XmlDocument类实现类实现W3C定义的定义的完整完整XML DOM Level 2 Core。XPathNavigator:和:和XmlDocument相似,相似,XPathNavigator在内存中保存整个在内存中保存整个XML文档。文档。XDocument:XDocument为处理为处理XML提供一个更提供一个更直观和有效的直观和有效的API。1XmlDocument概述概述

10、文档对象模型(文档对象模型(Document Object Model,DOM)是)是XML文档的内存(缓存)树形文档的内存(缓存)树形表示形式,允许对该文档导航和编辑。表示形式,允许对该文档导航和编辑。在在.NET FrameWork中通过中通过XmlDocument实现对实现对DOM的封装,使程序员能够以编程的封装,使程序员能够以编程方式读取、操作和修改方式读取、操作和修改XML文档。文档。 2XmlDocument读取文件实例读取文件实例该实例显示读取该实例显示读取DvdList.xml文档并显示元文档并显示元素列表的素列表的Web页面,使用不同的缩进来显页面,使用不同的缩进来显示整体结

11、构。具体实现请参考源代码下示整体结构。具体实现请参考源代码下ch14_3网站中的网站中的XmlDOM.aspx文件。文件。 1XDocument类概述类概述XDocument类是管理内存中类是管理内存中XML所有功能的模型。所有功能的模型。与与XmlDocument类不同,它擅长构建类不同,它擅长构建XML内容内容(作为对比,(作为对比,XmlDocument使使XML构建不必太复构建不必太复杂)。如果要以非线性的方式生成杂)。如果要以非线性的方式生成XML,例如,例如,需要把一系列元素写到根元素中,然后又要在这些需要把一系列元素写到根元素中,然后又要在这些元素里添加更多的信息,就需要使用元素

12、里添加更多的信息,就需要使用XDocument这这样的内存类。样的内存类。2使用使用XDocument创建创建XML实例实例以下实例利用以下实例利用XDocument和和XElement创建创建整个整个XML文档,包括全部的元素、文本内文档,包括全部的元素、文本内容、特性和注释。具体实现请参考源代码容、特性和注释。具体实现请参考源代码下下ch14_3网站中的网站中的LinqToXml.aspx文件。文件。 3使用使用XDocument读取流的实例读取流的实例XDocument还可以简化对还可以简化对XML内容的读取内容的读取和导航。可以使用和导航。可以使用XDocument.Load()方法方

13、法从文件、从文件、URI或流中读取或流中读取XML文档,或者文档,或者可以使用可以使用XDocument.Parse()方法从一个字方法从一个字符串加载符串加载XML内容。得到一个含有内容的内容。得到一个含有内容的XDocument之后,就可以使用之后,就可以使用XElement类类的主要属性和方法深入节点树。的主要属性和方法深入节点树。 XElement类的主要方法类的主要方法 方方 法法说说 明明Attributes()获取这个元素的获取这个元素的XAttribute对象的集合对象的集合Attribute()获取特定名称的获取特定名称的XAttributeElements()获取由这个元素

14、包含的获取由这个元素包含的XElement对象的集合对象的集合Element()获取由该元素包含的具有特定名称的获取由该元素包含的具有特定名称的XElement(如果没有匹配项,则为空值)(如果没有匹配项,则为空值)Nodes()获取由该元素包含的所有获取由该元素包含的所有XNode对象,包括元素对象,包括元素以及其他内容,如注释以及其他内容,如注释14.4 使用使用LINQ to XML转换转换XMLXSL是把是把XML转换为各种格式的固定标准。转换为各种格式的固定标准。不过,它不是唯一的办法。上一节中介绍不过,它不是唯一的办法。上一节中介绍了了XDocument类,打开一个类,打开一个XD

15、ocument类,类,手工重组它的节点,然后保存结果。而通手工重组它的节点,然后保存结果。而通过过LINQ,使用,使用LINQ to XML进行转换,进行转换,需要运用一个作用投影的需要运用一个作用投影的LINQ表达式,技表达式,技巧在于投影必须返回一个巧在于投影必须返回一个XElement而不是而不是匿名类型。匿名类型。使用使用LINQ to XML转换转换XML实例实例以下实例从以下实例从DvdList2.xml文档中析取出一文档中析取出一些信息,并把它们重组为一个不同的结构。些信息,并把它们重组为一个不同的结构。具体实现请参考源代码下具体实现请参考源代码下ch14_4网站中的网站中的Li

16、nqToXmlTransform.aspx文件。文件。 14.5 使用使用XSLT转换转换XML图14-4 XSLT的处理机制直接使用直接使用XSLT转换转换XML文件实例文件实例要进行要进行XSLT转换,需要编写一个转换,需要编写一个XSL文件,文件,然后装载到然后装载到XslCompiledTransform类中,类中,最后调用最后调用Transform方法即可。方法即可。Transform方法提供了多个重载版本,根据输出的需方法提供了多个重载版本,根据输出的需要选择合适的方法。以下例子的转换结果要选择合适的方法。以下例子的转换结果将输出到浏览器中将输出到浏览器中 。具体实现请参考源代。具

17、体实现请参考源代码下码下ch14_5网站中的网站中的XsltXml.aspx,persons.xml文件。文件。在转换的过程中,要给样式表在转换的过程中,要给样式表XSLT指定参指定参数,只需要创建一个数,只需要创建一个XsltArgumentList实实例,然后给这个实例添加参数名称、命名例,然后给这个实例添加参数名称、命名空间和参数的值,然后在空间和参数的值,然后在Transform时,将时,将这个实例作为参数即可这个实例作为参数即可 。具体实现请参考。具体实现请参考源代码下源代码下ch14_5网站中的网站中的XsltArgument.aspx,persons1.xsl文件文件14.6 XML与与DataSet的交互的交互ADO.NET与与XML是紧密集成的,是紧密集成的,ADO.NET使用使用XML来表示离线数据,这来表示离线数据,这种特性为创建分布式应用程序和跨区域跨种特性为创建分布式应用程序和跨区域跨平台应用程序提供了很大的便利。回顾平台应用程序提供了很大的便利。回顾ADO.NET中的中的DataSet对象,它表示一个对象,它表示一个数据的集合。该对象除了保存各个数据表数据的集合。该对象除了保存各个数据表的数据外,还可以与的数据外,还可以与XML对象进行转换。对象进行转换。使用使用DataSet的的XML方法非常简单,下面方法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论