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