??在.NET Framework中,XmlTextReader和XmlTextWriter类供给了对xml数据的读和写把持。在本文中,作者讲述了XML浏览器(Reader)的系统结构及它们怎样与XMLDOM 和SAX 说明器联合。作者也演示了怎么样应用浏览器分析和验证XML文档,怎么样创立格局良好的XML文档,以及怎么样用函数读/写基于Base64和BinHex编码的大型的XML文档。最后,作者讲了怎么样实现一个基于流的读/写分析器,它把读写器都封装在一个单独的类里。
??大概三年前,我参加了一个软件研究会,主题是“没有XML,就没有编程的未来”。XML确实也在一步一步的发展,它已经嵌进到. NET Framework中了。在本文中,我将讲解. NET Framework中用于处理XML文档的API的角色和它的内部特征,然后我将演示一些常用的功效。
??从MSXML到.net的XML
??在. NET Framework呈现之前,你习惯应用MSXML服务----一个基于COM的类库---写windows的XML的驱动程序。不像. NET Framework中的类,MSXML类库的部分代码比API更深,它完整的嵌在把持系统的底层。MSXML的确能够与你的利用程序通信,但是它不能真正的与外部环境联合。
??MSXML类库能在win32中被导进,也能在CLR中应用,但它只能作为一个外部服务器组件应用。但是基于.NET Framework的利用程序能直接的用XML类与.NET Framework 的其它命名空间整合应用,并且写出来的代码易于浏览。
??作为一个独立的组件,MSXML分析器供给了一些高级的特征如异步分析。这个特征在.NET Framework中的XML类及.NET Framework的其它类都没有供给,但是,NET Framework中的XML类与其它的类整合可以很轻易的获得雷同的功效,在这个基础上你可以增加更多的功效。
??.NET Framework中的XML类供给了基础的分析、查询、转换XML数据的功效。在.NET Framework中,你可以找到支撑Xpath查询和XSLT转换的类,及读/写XML文档的类。另外,.NET Framework也包含了其它处理XML的类,例如对象的序列化(XmlSerializer和the SoapFormatter类),利用程序配置(AppSettingsReader类),数据存储(DataSet类)。在本文中,我只讨论实现基础XML I/O把持的类。
??XML分析模式
??既然XML是一种标记语言,就应当有一种工具按必定的语法来分析和懂得存储在文档中信息。这个工具就是XML分析器---一个组件用于读标记文本并返回指定平台的对象。
??所有的XML分析器,不管它属于哪个把持平台,不过乎都分以下的两类:基于树或者基于事件的处理器。这两类通常都是用XMLDOM(the Microsoft XML Document Object Model)和SAX(Simple API for XML)来实现。XMLDOM分析器是一个普通的基于树的API---它把XML文档当成一个内存结构树浮现。SAX分析器是基于事件的API----它处理每个在XML数据流中的元素(它把XML数据放进流中再进行处理)。通常,DOM能被一个SAX流载进并履行,因此,这两类的处理不是相互排挤的。
??总的来说,SAX分析器与XMLDOM分析器正好相反,它们的分析模式存在着极大的差别。XMLDOM被很好的定义在它的functionalition聚集里面,你不能扩大它。当它在处理一个大型的文档时,它要占用很大内存空间来处理functionalition这个宏大的聚集。
??SAX分析器利用客户端利用程序通过现存的指定平台的对象的实例往处理分析事件。SAX分析器把持全部处理过程,把数据“推出”到处理程序,该处理程序依次接收或拒尽处理数据。这种模式的长处是只需很少的内存空间。
??.NET Framework完整支撑XMLDOM模式,但它不支撑SAX模式。为什么呢?由于.NET Framework支撑两种不同的分析模式:XMLDOM分析器和XML浏览器。它显然不支撑SAX分析器,但这并不意味它没有供给类似SAX分析器的功效。通过XML浏览器SAX的所有的功效都能很轻易的实现及更有效的应用。不像SAX分析器,.NET Framework的浏览器全部都运作在客户端利用程序下面。这样,利用程序本身就可以只把真正需要的数据“推出”,然后从XML数据流中跳出来。而SAX分析模式要处理所有的对利用程序有用和无用的信息。
??浏览器是基于.NET Framework流模式工作的,它的工作方法类似于数据库的游标。有趣的是,实现类似游标分析模式的类供给对.NET Framework中的XMLDOM分析器的底层支撑。XmlReader、XmlWriter两个抽象类是所有.NET Framework中XML类的基础类,包含XMLDOM类、ADO.NET驱动类及配置类。所以在.NET Framework中你有两种可选的方法往处理XML数据。用XmlReader和XmlWriter类直接处理XML数据,或者用XMLDOM模式处理。更多的关于在.NET Framework中读文档的先容可以参见MSDN 2002 年八月刊的Cutting Edge栏目文章。
以上就是在.NET Framework中轻松处理XML数据(1-1) 的内容,更多相关内容请关注PHP中文网(www.php.cn)!