Compartir a través de


Escribir contenido del conjunto de datos como datos XML

En ADO.NET puede escribir una representación XML de , DataSetcon o sin su esquema. Si la información de esquema se incluye en línea con el XML, se escribe mediante el lenguaje de definición de esquema XML (XSD). El esquema contiene las definiciones de tabla del DataSet, así como las definiciones de relación y restricción.

Cuando un DataSet se escribe como datos XML, las filas del DataSet se escriben en sus versiones actuales. Sin embargo, DataSet también se puede escribir como un DiffGram para que se incluyan los valores actuales y originales de las filas.

La representación XML de DataSet se puede escribir en un archivo, una secuencia, xmlWriter o una cadena. Estas opciones proporcionan una gran flexibilidad para transportar la representación XML de DataSet. Para obtener la representación XML de DataSet como una cadena, use el método GetXml como se muestra en el ejemplo siguiente.

Dim xmlDS As String = custDS.GetXml()  
string xmlDS = custDS.GetXml();  

GetXml devuelve la representación XML de DataSet sin información de esquema. Para escribir la información de esquema de DataSet (como esquema XML) en una cadena, use GetXmlSchema.

Para escribir un DataSet en un archivo, una secuencia o un XmlWriter, use el método WriteXml. El primer parámetro que se pasa a WriteXml es el destino de la salida XML. Por ejemplo, pase una cadena que contenga un nombre de archivo, un objeto System.IO.TextWriter , etc. Puede pasar un segundo parámetro opcional de xmlWriteMode para especificar cómo se va a escribir la salida XML.

En la tabla siguiente se muestran las opciones de XmlWriteMode.

Opción XmlWriteMode Descripción
IgnoreSchema Escribe el contenido actual de DataSet como datos XML, sin un esquema XML. Este es el valor predeterminado.
WriteSchema Escribe el contenido actual del DataSet como datos XML con la estructura relacional como un esquema XML alineado.
DiffGram Escribe todo DataSet como un DiffGram, incluidos los valores originales y actuales. Para obtener más información, vea DiffGrams.

Al escribir una representación XML de un objeto DataSet que contiene objetos DataRelation, probablemente querrá que el XML resultante tenga las filas secundarias de cada relación anidadas dentro de sus elementos principales relacionados. Para ellos establezca la propiedad anidada de la DataRelation en true cuando agregue la DataRelation al DataSet. Para obtener más información, consulte Nesting DataRelations.

A continuación se muestran dos ejemplos de cómo escribir la representación XML de un DataSet en un archivo. En el primer ejemplo se pasa el nombre de archivo para el XML resultante como una cadena a WriteXml. En el segundo ejemplo se pasa un objeto System.IO.StreamWriter .

custDS.WriteXml("Customers.xml", XmlWriteMode.WriteSchema)  
custDS.WriteXml("Customers.xml", XmlWriteMode.WriteSchema);  
Dim xmlSW As System.IO.StreamWriter = New System.IO.StreamWriter("Customers.xml")  
custDS.WriteXml(xmlSW, XmlWriteMode.WriteSchema)  
xmlSW.Close()  
System.IO.StreamWriter xmlSW = new System.IO.StreamWriter("Customers.xml");  
custDS.WriteXml(xmlSW, XmlWriteMode.WriteSchema);  
xmlSW.Close();  

Asignar columnas a elementos XML, atributos y texto

Puede especificar cómo se representa una columna de una tabla en XML mediante la propiedad ColumnMapping del objeto DataColumn . En la tabla siguiente se muestran los distintos valores MappingType de la propiedad ColumnMapping de una columna de tabla y el XML resultante.

Valor de tipo de mapeo Descripción
Elemento Este es el valor predeterminado. La columna se escribe como un elemento XML donde ColumnName es el nombre del elemento y el contenido de la columna se escriben como texto del elemento. Por ejemplo:

<ColumnName>Column Contents</ColumnName>
Atributo La columna se escribe como un atributo XML del elemento XML para la fila actual donde ColumnName es el nombre del atributo y el contenido de la columna se escriben como el valor del atributo. Por ejemplo:

<RowElement ColumnName="Column Contents" />
SimpleContent El contenido de la columna se escribe como texto en el elemento XML de la fila actual. Por ejemplo:

<RowElement>Column Contents</RowElement>

Tenga en cuenta que SimpleContent no se puede establecer para una columna de una tabla que tenga columnas element o relaciones anidadas.
Escondido La columna no está escrita en la salida XML.

Consulte también