Compartir a través de


Sincronización de DataSet y XmlDataDocument

El ADO.NET DataSet proporciona una representación relacional de los datos. Para el acceso jerárquico a datos, puede usar las clases XML disponibles en .NET Framework. Históricamente, estas dos representaciones de datos se han utilizado por separado. Sin embargo, .NET Framework permite el acceso sincrónico en tiempo real tanto a las representaciones relacionales como jerárquicas de los datos a través del objeto DataSet y del XmlDataDocument objeto, respectivamente.

Cuando un DataSet se sincroniza con xmlDataDocument, ambos objetos trabajan con un único conjunto de datos. Esto significa que si se realiza un cambio en dataSet, el cambio se reflejará en XmlDataDocument y viceversa. La relación entre DataSet y XmlDataDocument crea una gran flexibilidad al permitir que una sola aplicación, mediante un único conjunto de datos, acceda a todo el conjunto de servicios creados en torno a DataSet (como controles de Formularios Web Forms y Windows Forms, y diseñadores de .NET de Visual Studio), así como el conjunto de servicios XML, incluido el lenguaje extensible stylesheet (XSL), Transformaciones XSL (XSLT) y Lenguaje de ruta de acceso XML (XPath). No es necesario elegir el conjunto de servicios a los que se va a dirigir con la aplicación; ambos están disponibles.

Hay varias maneras de sincronizar un conjunto de datos con xmlDataDocument. Ustedes pueden:

  • Rellene un conjunto de datos con el esquema (es decir, una estructura relacional) y los datos y, a continuación, sincroníquelo con un nuevo XmlDataDocument. Esto proporciona una vista jerárquica de los datos relacionales existentes. Por ejemplo:

    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);  
    
  • Rellene un conjunto de datos con un esquema (como un DataSet fuertemente tipado), sincroníquelo con xmlDataDocument y, a continuación, cargue XmlDataDocument desde un documento XML. Esto proporciona una vista relacional de los datos jerárquicos existentes. Los nombres de tabla y los nombres de columna del esquema DataSet deben coincidir con los nombres de los elementos XML con los que desea que se sincronicen. La coincidencia distingue mayúsculas de minúsculas.

    Tenga en cuenta que el esquema de DataSet solo debe coincidir con los elementos XML que desea exponer en la vista relacional. De este modo, puede tener un documento XML muy grande y una "ventana" relacional muy pequeña en ese documento. XmlDataDocument conserva todo el documento XML aunque dataSet solo expone una pequeña parte de él. (Para obtener un ejemplo detallado de esto, consulte Synchronizing a DataSet with an XmlDataDocument).

    En el ejemplo de código siguiente se muestran los pasos para crear un objeto DataSet y rellenar su esquema y, a continuación, sincronizarlo con xmlDataDocument. Tenga en cuenta que el esquema DataSet solo debe coincidir con los elementos de XmlDataDocument que desea exponer mediante dataSet.

    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");  
    

    No se puede cargar xmlDataDocument si está sincronizado con un dataSet que contiene datos. Se producirá una excepción.

  • Cree un nuevo XmlDataDocument y cárgelo desde un documento XML y, a continuación, acceda a la vista relacional de los datos mediante la propiedad DataSet de XmlDataDocument. Debe establecer el esquema de DataSet para poder ver cualquiera de los datos de XmlDataDocument mediante dataSet. De nuevo, los nombres de tabla y los nombres de columna del esquema DataSet deben coincidir con los nombres de los elementos XML con los que desea que se sincronicen. La coincidencia distingue mayúsculas de minúsculas.

    En el ejemplo de código siguiente se muestra cómo obtener acceso a la vista relacional de los datos en 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");  
    

Otra ventaja de sincronizar un XmlDataDocument con un DataSet es que se conserva la fidelidad de un documento XML. Si dataSet se rellena desde un documento XML mediante ReadXml, cuando los datos se escriben como un documento XML mediante WriteXml , puede diferir drásticamente del documento XML original. Esto se debe a que dataSet no mantiene el formato, como el espacio en blanco o la información jerárquica, como el orden de los elementos, del documento XML. DataSet tampoco contiene elementos del documento XML que se ignoraron porque no coincidían con el esquema del conjunto de datos. La sincronización de xmlDataDocument con un objeto DataSet permite mantener el formato y la estructura jerárquica de elementos del documento XML original en XmlDataDocument, mientras que DataSet solo contiene información de datos y esquema adecuada para dataSet.

Al sincronizar un conjunto de datos con xmlDataDocument, los resultados pueden diferir en función de si los DataRelation objetos están anidados o no. Para obtener más información, consulte Nesting DataRelations.

En esta sección

Sincronización de un conjunto de datos con xmlDataDocument
Muestra cómo sincronizar un DataSet fuertemente tipado y un esquema mínimo con un XmlDataDocument.

Realización de una consulta XPath en un conjunto de datos
Muestra cómo realizar una consulta XPath en el contenido de un DataSet.

Aplicación de una transformación XSLT a un conjunto de datos
Muestra cómo aplicar una transformación XSLT al contenido de un conjunto de datos.

Uso de XML en un conjunto de datos
Describe cómo interactúa dataSet con XML como origen de datos, incluida la carga y conservación del contenido de un dataSet como datos XML.

Anidar DataRelation
Describe la importancia de los objetos DataRelation anidados al representar el contenido de un dataSet como datos XML y describe cómo crear estas relaciones.

Conjuntos de Datos, Tablas de Datos y Vistas de Datos
Describe dataSet y cómo usarlo para administrar los datos de la aplicación e interactuar con orígenes de datos, incluidas las bases de datos relacionales y XML.

XmlDataDocument
Contiene información de referencia sobre la clase XmlDataDocument .

Consulte también