XML 与关系数据和 ADO.NET 集成

XmlDataDocument 类是 XmlDocument 的派生类,包含 XML 数据。 XmlDataDocument 的优势在于它在关系数据和分层数据之间提供桥梁。 它是可以绑定到 DataSetXmlDocument,两个类都可以同步对两个类中包含的数据的更改。 绑定到 DataSetXmlDocument 允许 XML 与关系数据集成,无需将数据表示为 XML 或关系格式。 可以同时进行两种操作,而不必局限于单一的数据表示形式。

在两个视图中提供数据的好处包括:

  • XML 文档的结构化部分可以映射到数据集,并有效地存储、编制索引和搜索。

  • 可以通过游标模型在关系存储的 XML 数据上有效地完成转换、验证和导航。 有时,与将 XML 存储在 XmlDocument 模型中相比,它在处理关系结构时可以更加高效。

  • 数据集可以存储 XML 的一部分。 也就是说,可以使用 XPathXslTransform 将感兴趣的元素和属性存储到 数据集 中。 在此处,可以对较小的筛选数据子集进行更改,更改将传播到 XmlDataDocument 中的较大数据。

还可以对从 SQL Server 加载到 DataSet 中的数据运行转换。 另一个选项是将 .NET Framework 类样式管理的 WinForm 和 WebForm 控件绑定到从 XML 输入流填充的 数据集

除了支持 XslTransform 之外,XmlDataDocument 还将面向 XPath 查询与验证公开关系数据。 基本上,所有 XML 服务都可用于关系数据,而关系工具(如控制绑定、代码生成等)可以通过对 XML 进行结构化投影而实现,这不会影响 XML 的完整性。

由于 XmlDataDocument 继承自 XmlDocument,因此它提供 W3C DOM 的实现。 XmlDataDocumentDataSet 相关联并在其中存储了其一部分数据这一事实,并不会以任何方式限制或改变其作为 XmlDocument 的用途。 为使用 XmlDocument 而编写的代码不经更改,即可对 XmlDataDocument 使用。 DataSet 通过定义表、列、关系和约束来提供相同数据的关系视图,并且是独立的内存中用户数据存储。

下图显示了 XML 数据与 DataSetXmlDataDocument 的不同关联:

显示与 XML 数据集的不同关联的关系图。

此图显示 XML 数据可以直接加载到 DataSet 中,从而允许以关系型方式直接操作 XML。 或者,XML 可以加载到 DOM 的派生类(即 XmlDataDocument),然后加载并同步到 数据集。 由于 DataSetXmlDataDocument 通过一组数据进行同步,因此对一个存储区中的数据所做的更改反映在另一个存储区中。

XmlDataDocumentXmlDocument 继承所有编辑和导航功能。 有时,使用 XmlDataDocument 及其继承的功能(与 数据集同步)比直接将 XML 加载到 数据集更合适。 下表显示了选择要用于加载 数据集的方法时要考虑的项。

何时将 XML 直接加载到数据集中 何时将 XmlDataDocument 与数据集同步
数据集中的数据查询比 XPath 更容易使用 SQL。 需要对 数据集中的数据执行 XPath 查询。
源 XML 中元素排序的保留并不重要。 源 XML 中元素排序的保留至关重要。
元素和格式之间的空白不需要保留在源 XML 中。 源 XML 中的空白和格式保留至关重要。

如果直接从 数据集 中加载和写入 XML 以满足需求,请参阅 从 XML 加载数据集 并将 数据集写入 XML 数据

如果从 XmlDataDocument 加载数据集可满足你的需求,请参阅将数据集与 XML 文档同步

另请参阅