.NET Framework 中的 XML 设计目标

原创 2004年11月02日 10:54:00
NET Framework 中的 XML 目标是:
  • 符合 W3C 标准。
  • 扩展性。
  • 可插接式结构。
  • 性能。
  • 与 ADO.NET 紧密集成。

符合标准

符合标准意味着类完全符合 XML、命名空间、XSLT、XPath、架构和文档对象模型 (DOM) 的当前 W3C 建议标准。符合标准确保了互操作性并使跨平台应用程序开发变得容易。

最显著的一点是,.NET Framework 中的 XML 类支持 W3C XML 架构定义语言 (XSD) 1.0 建议。.NET Framework 中有一些 XML 类提供验证,还有一个对象模型可用于在内存中生成 XSD 架构。可针对架构、DTD、XDR 和 XSD 进行验证的快速只进分析器称为 XmlValidatingReaderXmlValidatingReader 是符合标准的 XML 分析器。XmlSchemaCollection 类可用于在使用 XmlValidatingReader 时缓存常用的 XSD 或 XDR 架构。

.NET Framework 中有一个 XML 类集提供架构对象模型 (SOM),使用该模型可以以编程方式生成和编译 XSD 架构。XmlSchema 类表示 XSD 架构。使用 XmlReaderXmlWriter 类可以加载和保持这些架构。

XmlDocument 类实现文档对象模型级别 1 和级别 2 建议,它是根据 .NET Framework 的通用设计指南定制的。例如,方法名称使用大写字母。

XslTransform 类符合用于使用 XSLT 转换文档的 XSL 转换 (XSLT) 1.0 版建议和 XML 路径语言 (XPath) 1.0 建议。

扩展性

.NET Framework 中的 XML 通过使用抽象基类和虚方法而变得可扩展。这种扩展性(或子类创建)由 XmlReaderXmlWriterXPathNavigator 抽象类阐释,这些抽象类是使得能够在不同的存储区或数据源上开发新实现的类和公开 XML 的类。例如,XPathNavigator 是集成了 XPath 查询引擎的 API,该引擎可在现有存储区(如文件系统、注册表和关系数据库)上实现。它不仅将数据显示为 XML,还使用 XPath API 查询方法(如 Select)的默认实现,提供对不同数据源的 XPath 查询支持。

扩展性的另一个示例是 XmlReader,它提供一个用于对存储区进行快速只进分析的 API,公开在它移动通过流时所发现的 XML Infoset。.NET Framework 中的 XML 具有以下 XmlReader 实现:用于读取流的 XmlTextReader 类、用于读取节点树的 XmlNodeReader 类和用于在 XmlTextReader 上分层验证支持的 XmlValidatingReader。

XmlWriter 使用基于推送的 API 生成 XML 流。.NET Framework 中的 XML 具有一个称为 XmlTextWriterXmlWriter 实现。

可以进一步从这些类的实现派生,创建可以实现特定处理的其他读取器。例如,通过从 XmlTextReader 派生,创建一个称为 MyXmlTextReader 的自定义读取器,可以创建具有特定于应用程序处理需求的逻辑的读取器版本。

XmlResolver 抽象类提供 XML 文档中引用的外部资源的挂钩。这使您可以用特定于应用程序(如数据库)的方式来缓存资源,或通过从该类派生来解析具有不同协议的资源。XmlResolver 的两个实现 XmlUrlResolverXmlSecureResolver 将解析使用 http://https://file:// 协议的资源。

可插接式结构

.NET Framework 中的 XML 具有可插接式结构。在此基于流的结构中,可插接式意味着可以很容易替代 .NET Framework 中基于这些抽象类的组件。可插接式结构还意味着数据可以在组件之间以流的形式传送,以及插入到此流中的新组件可以改变处理。例如,来自 XML Web services 的流可用 XmlTextReader 分析。可以使用 XmlTextReader 创建 XmlDocument,然后可以使用 XmlDocument 创建 XmlNodeReader

另一个示例是从 XmlReader 加载 DOM(XmlDocument 类)并使用 XmlWriter 保存输出。通过扩展现有类来创建自己的这些类的实现,可以影响 XmlDocument 类的行为。例如,如果创建了一个称为 MyXmlFileReaderXmlReader 实现,并且它可以将文件系统公开为 XML,则可以从此读取器加载 XmlDocument。或者可以从 XmlTextReader 继承,创建一个新的自定义读取器将以属性为中心的文档转换为以元素为中心的文档,它可以用于加载 XmlDocument。这为基于现有类的新类提供了可插接式结构。

将组件插接在一起的另一个示例是在转换过程中使用不同的数据存储区(如 XPathDocumentXmlDocument)。这些数据存储区可用 XslTransform 类转换,输出然后可以流入另一个存储区或以流的形式从 XML Web services 返回。下图说明了这一点。


通过使用 IXPathNavigable 接口,实现 XPathNavigator 的任何存储区都可以插入到 XslTransform 类中以允许对该存储区进行 XSLT 转换。XmlDocumentXPathDocumentXmlDataDocument 类具有此能力。然后,来自 XslTransform 的流式输出可以发送到可插接式结构样式的 XmlReaderXmlWriter

性能

.NET Framework 中的 XML 类表示低级别 XML 处理组件,这些组件不仅用作 .NET Framework 的一部分,还用于将 XML 集成到应用程序中。这些类需要具有极高的性能。

.NET Framework 中的 XML 类旨在支持基于流处理的模型,它具有下列特性:

  • 使用 XmlReader 进行的只进、拉模型分析所用的缓存最小。
  • 使用 XmlValidatingReader 进行只进验证。
  • XPathNavigator 的创新游标样式导航,它将节点创建最小化为单个虚节点,但仍提供对文档的随机访问。这不需要在内存中生成完整的节点树,如 DOM。
  • 来自 XslTransform 类的增量流式输出。

XPathDocument 是 XPath 查询的优化只读存储区,建议在需要进行 XSLT 处理的任何时候都使用它。通过使用此存储区和 XslTransform 类,可以实现高性能的 XSLT 转换。

与 ADO.NET 集成

通过 XML 类和 ADO.NET 之间的紧密集成,关系数据和 XML 在 .NET Framework 中结合在一起。

DataSet 组件表示断开连接的数据库,它能够使用 XmlReaderXmlWriter 类读取和写入 XML、将其内部关系架构结构保持为 XML 架构 (XSD) 以及从 XML 文档推测架构结构。

通过将 DataSetXmlDocument 同步,使其中一个所维护的数据在适当的时候在另一个中得到更新,XmlDataDocument 确实超出了 XML 和关系数据领域的边界。由于 XmlDocument 能够存储半结构化数据,因此在获得 XML 存储区的所有功能的同时,DataSet 基于它的架构提供 XML 上的关系视图。

有关 .NET Framework 如何通过 DataSet 对象和 XmlDataDocument 对象启用对数据的关系和分层表示形式的实时同步访问的更多信息,请参见关系数据和 ADO.NET 的 XML 集成

.NET Framework 中的 XML 设计目标

.NET Framework 中的 XML 目标是: 符合 W3C 标准;扩展性;可插接式结构;性能;与 ADO.NET 紧密集成;符合标准 符合标准意味着类完全符合 XML、命名空间、XSLT、XP...
  • penginpha
  • penginpha
  • 2009年04月09日 17:52
  • 461

.netframework 4.5.1安装成功,单在vs目标框架中找不到

安装好vs2012后默认的目标框架是.netframework 4.5, 现在想安装4.5.1的,已经提示安装成功,并且通过aspnet_regiis.exe注册过了, 通过aspnet_regiis...
  • u013236043
  • u013236043
  • 2017年06月29日 09:56
  • 1549

net项目发布到IIS上一系列问题汇总

net项目发布到IIS上一系列问题汇总
  • chenjiazhu
  • chenjiazhu
  • 2016年07月20日 09:57
  • 1369

编译时提示程序集引用找不到与.Net Framework 4 Client Profile

在Ioc容器的性能测试中,在Munq代码完编译时出现Error:“The type or namespace name 'Munq' could not be found (are you missi...
  • lexinquan
  • lexinquan
  • 2011年08月16日 15:37
  • 2596

目标框架framework不同对项目的影响

DLL:         背景:         开始做中谷项目时我还不知道怎么用DLL。后来看别人用才试着去学习使用。虽然现在已经会用了,但DLL的强大之处我了解的还远远不够。下面先简单说下DLL。...
  • zhuanzhe117
  • zhuanzhe117
  • 2014年01月13日 23:28
  • 3052

解决Visual Studio2010目标框架没 framework 2.0 3.0 3.5

现象  右击项目,选择“属性”,进入“应用程序”,“目标框架”中只有.NET Framework 4和.NET Framework 4 Client Profile,没有.NET Framework ...
  • esinzhong
  • esinzhong
  • 2011年06月21日 10:41
  • 6085

vs2010 不能编译.net framework2.0,3.0或3.5(多目标) xp系统 解决方案

下载安装 xx 框架。NET 3.5 SP1所需的目标框架2.0,3.0或3.5(多目标)使用Visual Studio 2010 Web开发工具Microsoft 2010年4月22日4:02...
  • li0531
  • li0531
  • 2013年03月29日 09:07
  • 3576

修改VS2010的VC.net项目 framework对应版本

在C++/CLI中修改VC++的framework版本,由于VS2010不支持像C#项目文件的那种直接的下拉框模式,我们需要在.vcxproj文件中修改目标版本(TargetFrameWorkVers...
  • hbxtlhx
  • hbxtlhx
  • 2012年10月23日 09:11
  • 13232

.NET Framework 各个版本之间的关系以及下载地址整理汇总

http://www.cnblogs.com/robnetcn/p/3383481.html .NET Framework 各个版本之间的关系以及下载地址   Version...
  • wlanye
  • wlanye
  • 2015年11月24日 15:56
  • 1488

XML的设计目标

可直接用于internet 支持各种应用程序 XML与SGML兼容 编写处理XML文档的应用程序很简单 XML可选特性的数目尽可能少 XML文档应便于阅读而且相当...
  • jiagun4
  • jiagun4
  • 2007年05月13日 01:19
  • 939
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.NET Framework 中的 XML 设计目标
举报原因:
原因补充:

(最多只允许输入30个字)