ADO.NET DataSet 提供数据的关系表示形式。 对于分层数据访问,可以使用 .NET Framework 中提供的 XML 类。 从历史上看,这两种数据表示形式单独使用。 但是,.NET Framework 能够通过 DataSet 对象进行关系数据表示的实时同步访问,并通过 XmlDataDocument 对象实现层次数据表示的实时同步访问。
当 DataSet 与 XmlDataDocument 同步时,这两个对象都在处理一组数据。 这意味着,如果对 数据集进行了更改,则更改将反映在 XmlDataDocument 中,反之亦然。 DataSet 与 XmlDataDocument 之间的关系通过允许单个应用程序使用一组数据来访问围绕 DataSet 构建的完整服务套件,从而创造了极大的灵活性。这些服务包括 Web 窗体、Windows 窗体控件、Visual Studio .NET 设计器,以及 XML 服务套件,其中包括可扩展样式表语言(XSL)、XSL 转换(XSLT)和 XML 路径语言(XPath)。 无需选择应用程序要面向的服务集;这两者都可用。
可通过多种方式将 数据集 与 XmlDataDocument 同步。 您可以:
使用架构(即关系结构)和数据填充 数据集 ,然后将其与新的 XmlDataDocument 同步。 这提供了现有关系数据的分层视图。 例如:
Dim dataSet As DataSet = New DataSet ' Add code here to populate the DataSet with schema and data. Dim xmlDoc As XmlDataDocument = New XmlDataDocument(dataSet)
DataSet dataSet = new DataSet(); // Add code here to populate the DataSet with schema and data. XmlDataDocument xmlDoc = new XmlDataDocument(dataSet);
仅使用架构填充 DataSet(如强类型化的 DataSet),使其与 XmlDataDocument 同步,然后从 XML 文档中加载 XmlDataDocument。 这提供了现有分层数据的关系视图。 DataSet 架构中的表名和列名必须与要与其同步的 XML 元素的名称匹配。 该匹配区分大小写。
请注意, 数据集 的架构只需要匹配要在关系视图中公开的 XML 元素。 这样,就可以在该文档上拥有非常大的 XML 文档和非常小的关系“窗口”。 即使 DataSet 只公开其中的一小部分,XmlDataDocument 也会保留整个 XML 文档。 (有关此示例的详细示例,请参阅将 数据集与 XmlDataDocument 同步。)
下面的代码示例演示了创建 数据集 并填充其架构的步骤,然后将其与 XmlDataDocument 同步。 请注意,数据集架构只需要匹配要使用数据集公开的 XmlDataDocument 中的元素。
Dim dataSet As DataSet = New DataSet ' Add code here to populate the DataSet with schema, but not data. Dim xmlDoc As XmlDataDocument = New XmlDataDocument(dataSet) xmlDoc.Load("XMLDocument.xml")
DataSet dataSet = new DataSet(); // Add code here to populate the DataSet with schema, but not data. XmlDataDocument xmlDoc = new XmlDataDocument(dataSet); xmlDoc.Load("XMLDocument.xml");
如果 XmlDataDocument 与包含数据的数据集同步,则无法加载 XmlDataDocument。 否则会引发异常。
创建新的 XmlDataDocument 并从 XML 文档加载它,然后使用 XmlDataDocument 的 DataSet 属性访问数据的关系视图。 需要设置 DataSet 的架构,然后才能使用 DataSet 查看 XmlDataDocument 中的任何数据。 同样, DataSet 架构中的表名称和列名称必须与要同步的 XML 元素的名称匹配。 该匹配区分大小写。
下面的代码示例演示如何访问 XmlDataDocument 中数据的关系视图。
Dim xmlDoc As XmlDataDocument = New XmlDataDocument Dim dataSet As DataSet = xmlDoc.DataSet ' Add code here to create the schema of the DataSet to view the data. xmlDoc.Load("XMLDocument.xml")
XmlDataDocument xmlDoc = new XmlDataDocument(); DataSet dataSet = xmlDoc.DataSet; // Add code here to create the schema of the DataSet to view the data. xmlDoc.Load("XMLDocument.xml");
将 XmlDataDocument 与 数据集 同步的另一个优点是保留 XML 文档的保真度。 如果使用 ReadXml 从 XML 文档填充数据集,则当使用 WriteXml 将数据写回 XML 文档时,它可能与原始 XML 文档大相径庭。 这是因为 数据集 不保留 XML 文档中的空白或分层信息(如元素顺序)的格式。 数据集还不包含 XML 文档中被忽略的元素,因为它们与数据集的架构不匹配。 将 XmlDataDocument 与 DataSet 同步允许在 XmlDataDocument 中维护原始 XML 文档的格式和分层元素结构,而 数据集 仅包含适合 数据集的数据和架构信息。
将 数据集 与 XmlDataDocument 同步时,结果可能会有所不同,具体取决于对象 DataRelation 是否嵌套。 有关详细信息,请参阅 嵌套数据关系。
本节中
将数据集与 XmlDataDocument 同步
演示如何使用 XmlDataDocument 同步具有最小架构的强类型数据集。
对数据集执行 XPath 查询
演示如何对 数据集的内容执行 XPath 查询。
将 XSLT 转换应用于数据集
演示如何将 XSLT 转换应用于 数据集的内容。
相关部分
在数据集中使用 XML
描述 DataSet 如何将 XML 作为数据源进行交互,包括将 数据集 的内容作为 XML 数据加载和保留。
嵌套 DataRelation
讨论嵌套 DataRelation 对象在将 数据集 的内容表示为 XML 数据时的重要性,并描述如何创建这些关系。
数据集、数据表和数据视图
介绍 DataSet 以及如何使用它来管理应用程序数据以及与数据源(包括关系数据库和 XML)交互。
XmlDataDocument
包含有关 XmlDataDocument 类的参考信息。