0

0

在.NET Framework中轻松处理XML数据(1-1)

黄舟

黄舟

发布时间:2016-12-20 14:01:31

|

2134人浏览过

|

来源于php中文网

原创

??在.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)! 

万知
万知

万知: 你的个人AI工作站

下载

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

8

2026.01.30

c++ 字符串格式化
c++ 字符串格式化

本专题整合了c++字符串格式化用法、输出技巧、实践等等内容,阅读专题下面的文章了解更多详细内容。

9

2026.01.30

java 字符串格式化
java 字符串格式化

本专题整合了java如何进行字符串格式化相关教程、使用解析、方法详解等等内容。阅读专题下面的文章了解更多详细教程。

8

2026.01.30

python 字符串格式化
python 字符串格式化

本专题整合了python字符串格式化教程、实践、方法、进阶等等相关内容,阅读专题下面的文章了解更多详细操作。

1

2026.01.30

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

20

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

17

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

19

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

3

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 8万人学习

python编程入门系列图文教程
python编程入门系列图文教程

共65课时 | 24.7万人学习

vscode其实很简单
vscode其实很简单

共72课时 | 29.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号