XmlDataDocument 类是 XmlDocument 的派生类,包含 XML 数据。 XmlDataDocument 的优势在于它在关系数据和分层数据之间提供桥梁。 它是可以绑定到 DataSet 的 XmlDocument,两个类都可以同步对两个类中包含的数据的更改。 绑定到 DataSet 的 XmlDocument 允许 XML 与关系数据集成,无需将数据表示为 XML 或关系格式。 可以同时进行两种操作,而不必局限于单一的数据表示形式。
在两个视图中提供数据的好处包括:
XML 文档的结构化部分可以映射到数据集,并有效地存储、编制索引和搜索。
可以通过游标模型在关系存储的 XML 数据上有效地完成转换、验证和导航。 有时,与将 XML 存储在 XmlDocument 模型中相比,它在处理关系结构时可以更加高效。
数据集可以存储 XML 的一部分。 也就是说,可以使用 XPath 或 XslTransform 将感兴趣的元素和属性存储到 数据集 中。 在此处,可以对较小的筛选数据子集进行更改,更改将传播到 XmlDataDocument 中的较大数据。
还可以对从 SQL Server 加载到 DataSet 中的数据运行转换。 另一个选项是将 .NET Framework 类样式管理的 WinForm 和 WebForm 控件绑定到从 XML 输入流填充的 数据集 。
除了支持 XslTransform 之外,XmlDataDocument 还将面向 XPath 查询与验证公开关系数据。 基本上,所有 XML 服务都可用于关系数据,而关系工具(如控制绑定、代码生成等)可以通过对 XML 进行结构化投影而实现,这不会影响 XML 的完整性。
由于 XmlDataDocument 继承自 XmlDocument,因此它提供 W3C DOM 的实现。 XmlDataDocument 与 DataSet 相关联并在其中存储了其一部分数据这一事实,并不会以任何方式限制或改变其作为 XmlDocument 的用途。 为使用 XmlDocument 而编写的代码不经更改,即可对 XmlDataDocument 使用。 DataSet 通过定义表、列、关系和约束来提供相同数据的关系视图,并且是独立的内存中用户数据存储。
下图显示了 XML 数据与 DataSet 和 XmlDataDocument 的不同关联:
此图显示 XML 数据可以直接加载到 DataSet 中,从而允许以关系型方式直接操作 XML。 或者,XML 可以加载到 DOM 的派生类(即 XmlDataDocument),然后加载并同步到 数据集。 由于 DataSet 和 XmlDataDocument 通过一组数据进行同步,因此对一个存储区中的数据所做的更改反映在另一个存储区中。
XmlDataDocument 从 XmlDocument 继承所有编辑和导航功能。 有时,使用 XmlDataDocument 及其继承的功能(与 数据集同步)比直接将 XML 加载到 数据集更合适。 下表显示了选择要用于加载 数据集的方法时要考虑的项。
何时将 XML 直接加载到数据集中 | 何时将 XmlDataDocument 与数据集同步 |
---|---|
数据集中的数据查询比 XPath 更容易使用 SQL。 | 需要对 数据集中的数据执行 XPath 查询。 |
源 XML 中元素排序的保留并不重要。 | 源 XML 中元素排序的保留至关重要。 |
元素和格式之间的空白不需要保留在源 XML 中。 | 源 XML 中的空白和格式保留至关重要。 |
如果直接从 数据集 中加载和写入 XML 以满足需求,请参阅 从 XML 加载数据集 并将 数据集写入 XML 数据。
如果从 XmlDataDocument 加载数据集可满足你的需求,请参阅将数据集与 XML 文档同步。