.NET Framework 中的 XML 具有可插接式结构。在此基于流的结构中,可插接式意味着可以很容易替代 .NET Framework 中基于这些抽象类的组件。可插接式结构还意味着数据可以在组件之间以流的形式传送,以及插入到此流中的新组件可以改变处理。例如,来自 XML Web services 的流可用 XmlTextReader 分析。可以使用 XmlTextReader 创建 XmlDocument,然后可以使用 XmlDocument 创建 XmlNodeReader。
另一个示例是从 XmlReader 加载 DOM(XmlDocument 类)并使用 XmlWriter 保存输出。通过扩展现有类来创建自己的这些类的实现,可以影响 XmlDocument 类的行为。例如,如果创建了一个称为 MyXmlFileReader 的 XmlReader 实现,并且它可以将文件系统公开为 XML,则可以从此读取器加载 XmlDocument。或者可以从 XmlTextReader 继承,创建一个新的自定义读取器将以属性为中心的文档转换为以元素为中心的文档,它可以用于加载 XmlDocument。这为基于现有类的新类提供了可插接式结构。
将组件插接在一起的另一个示例是在转换过程中使用不同的数据存储区(如 XPathDocument 和 XmlDocument)。这些数据存储区可用 XslTransform 类转换,输出然后可以流入另一个存储区或以流的形式从 XML Web services 返回。下图说明了这一点。
使用 XslTransform 类对数据进行流处理
通过使用 IXPathNavigable 接口,实现 XPathNavigator 的任何存储区都可以插入到 XslTransform 类中以允许对该存储区进行 XSLT 转换。XmlDocument、XPathDocument 和 XmlDataDocument 类具有此能力。然后,来自 XslTransform 的流式输出可以发送到可插接式结构样式的 XmlReader 或 XmlWriter。