文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 国产软件 | 国外软件 | 汉化补丁 | 设为首页 | 加入收藏
业界资讯 | 图形图像 | 操作系统 | 网络冲浪 | 工具软件 | 办公软件 | 媒体动画 | 精文荟萃 | 认证考试 | 网站建设 | 技术开发 | 专栏
当前位置:abcdown网络学院网络编程XML/SoapXMLTextReader和XmlDocument读取XML文件的比较
精品广告
推荐TOP10
·跟我学XML和XSL
·XHTML教程,简单认识XHTML基础知识
·XML轻松学习手册
·XSL/XML网页制作入门,入门到精通
·用XML+JSP实现网页内容动态显示的方案
·将XML结点转换成JAVABEAN并存入数据库
·XML入门教程:XML 浏览器支持
·XHTML 1.0:标记新的开端
·什么是 XML Web Service
·什么是XML
阅读TOP10
·XMLTextReader和XmlDocument读取XML文件的比较
·自定义应用程序配置文件(app.config)
·如何读取XML文件内容
·XML轻松学习手册
·XML字符串和XML DOCUMENT的相互转换
·根据xsd生成xml文档
·用XML和XSL来生成动态页面
·ASP.NET中应用XML技术实现Web报表打印
·XSL/XML网页制作入门,入门到精通
·什么是 XML Web Service

XMLTextReader和XmlDocument读取XML文件的比较

日期:2008年10月10日 作者: 查看:[大字体 中字体 小字体]


看到网上一片文章,自己式了一下,果然 XMLTextReader速度要快!

在.NET框架的System.XML名称空间中包含的XMLTextReader类不需要对系统资源要求很高,就能从XML文件中快速读取数据。使用XMLTextReader类能够从XML文件中读取数据,并且将其转换为HTML格式在浏览器中输出。
 

  读本文之前,读者需要了解一些基本知识:XML、HTML、C#编程语言,以及.NET尤其是ASP.NET框架的一些知识。

  微软公司的.NET框架为开发者提供了许多开发的便利,随着XML的重要性不断增长,开发者们都期待着有一整套功能强大的XML工具被开发出来。.NET框架没有辜负我们的这番期望,在System.XML 名称空间中组织进了以下几个用于XML的类:

  XMLTextReader------提供以快速、单向、无缓冲的方式存取XML数据。(单向意味着你只能从前往后读取XML文件,而不能逆向读取)

  XMLValidatingReader------与XMLTextReader类一起使用,提供验证DTD、XDR和XSD架构的能力。

  XMLDocument------遵循W3C文档对象模型规范的一级和二级标准,实现XML数据随机的、有缓存的存取。一级水平包含了DOM的最基本的部分,而二级水平增加多种改进,包括增加了对名称空间和级连状图表(css)的支持。

  XMLTextWriter------生成遵循 W3C XML 1.0 规范的XML文件。

  本文主要讲述的是第一个类XMLTextReader,这个类设计的目的就是从XML文件中快速的读取数据,而对系统资源(主要包括内存和处理器时间)不做很高的要求。在父级程序的控制下,它通过每次只处理一个节点的方式对XML文件进行逐步操作,实现这种工作过程。在XML文件的每个节点中,父级程序能决定该节点的类型,它的属性和数据(如果有的话),以及其他有关该节点的信息。基于这些信息,父级程序可以选择是处理这个节点还是忽略该节点的信息,以满足各种应用程序请求的需要。这被称为抽取式(pull)处理模型,因为父级程序发出请求并且从XML文件中抽取各个节点,然后根据需要处理它或者是不处理它。
  我们可以把XMLTextReader类和XML简单应用程序接口,即SAX相比,后者是在编程人员中非常流行的另一种读取XML数据的技术。XMLTextReader 和SAX有一点很相似,它们都不需要占用很多的系统资源,就能迅速的从XML文件读取数据。但是,与XMLTextReader的抽取式模型迥然不同,SAX使用的是推入式模型:XML处理器通过 “事件”告知主机应用程序哪些节点数据是可以获得,那些不能获得;根据需要,主机程序则作出相应的反应或置之不理。换句话说,数据的传送方向是从SAX处理程序中推入到主机。程序员们势必会在抽取式和推入式处理模型谁更有优势的问题上争论一番,但是大家都不可否认的是,两种模型都能很好的进行工作。.NET 框架不支持SAX,但是你能使用现存的SAX工具, 例如 MSXML分析器,用于你的.NET 程序。

  XMLTextReader 类有一些构造程序来适应各种各样的情况,比如从一个已经存在的数据流或统一资源定位网址读取数据。最常见的是,你或许想从一个文件读取XML数据,那么也就有一个相应的构造程序来为此服务。这里有一个例子(我的所有代码例子都使用的是C#语言,如果你喜欢使用VISUAL BASIC语言,它们转换起来很容易)。

XMLTextReader myReader;
myReader = New XMLTextReader("c:\data\sales.XML")

  创建一个称为Read()方法的循环,这个方法的返回值总是为真,直到到达文件的底部时,返回值才变为假。换句话说, 循环在文件的开始时启动并且读入所有的节点, 一次读入一个节点, 直到到达文件的结尾:

While (myReader.Read()) {
...
// 在这里处理每个节点.
...
}

  每次成功调用Read()之后,XMLTextReader实例化程序包含了目前节点(即刚刚从文件中读取的那个节点)的信息。我们可以从XMLTextReader的成员中获得上述信息,就像表格1中描述的一样;并通过NodeType属性判断出当前节点的类型。在节点类型的基础上,程序的代码可以读取节点数据,检查它是否有属性,到底是忽略它还是根据程序需要进行相应的操作和处理。

  当使用NodeType属性时,理解节点怎么联系到XML单元是非常重要的。例如, 看下列 XML元素:

<city>Chongqing</city>

  XMLtextReader 把这个元素看作 3 个节点,顺序如下:

  1.<city>标签被读为类型 XMLNodeType.Element 节点,元素的名字“city”可从 XMLTextReader 的Name属性中获得。

  2.文本数据“Chongqing”被读为类型为XMLNodeType.Text的节点。数据“Chongqing ” 可从XMLTextReader 的Value属性中取得。

  3.</city>标签被读为类型为XMLNodeType.EndElement 节点。同样,元素的名称“city”可从XMLTextReader的Name属性中获得。

  这是 3 种重要的节点类型,其它的类型在.NET的说明文档中有详细说明,请大家参阅相关资料。

  如果XMLTextReader遇到一个错误, 例如出现违反XML句法的情况,它抛出一个System.XML.XMLException类型的异常。使用这个类的代码应该总是被保护 ( 在Try……Catch块中),就像你以后在演示程序中看到的一样。

[1] [2] [3] [4] [5] [6] 下一页 

上一篇:用AspJpeg组件,按宽高比例,真正生成缩略图

下一篇:JSP高访问量下的计数程序


相关软件: 相关文章:
·电影音乐提取机 V3.8
·密码截取V3.3
·资源提取王 V1.32
·Cooolsoft MP3 Sound Cutter (音频截取工具) V1.41 绿色版
·Capture Solution 5.51 注册版——屏幕影像撷取
·金山毒霸-可疑程序提取工具V2.02
·CD音频抓取专家(CDex) V1.70 beta 2 c1.1 汉化版V1.70 beta 2 c1.1 汉化版
·保护QQ聊天记录不被盗取的技巧
·不用任何软件(木马程序)盗取账号密码
·图片保存到数据库和从数据库读取图片并显示(c#)
·用6位QQ注意啦,免费领取6位影子靓号
·英文名起名取名字技巧+英语姓名小常识
·XMLTextReader和XmlDocument读取XML文件的比较
·巧用Excel:利用身份证号码 提取个人信息

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.abcdown.net
首页 | 本站声明 | 下载帮助 | 发布软件 |
中文版权所有:ABC学院 浙ICP备05000717号