Leer en inglés

Compartir a través de


DataTable.ReadXml Método

Definición

Lee esquema y datos XML en el objeto DataTable.

Sobrecargas

ReadXml(Stream)

Lee los datos y el esquema XML en el objeto DataTable mediante el objeto Stream especificado.

ReadXml(TextReader)

Lee los datos y el esquema XML en el objeto DataTable mediante el objeto TextReader especificado.

ReadXml(String)

Lee los datos y el esquema XML en el objeto DataTable desde el archivo especificado.

ReadXml(XmlReader)

Lee datos y el esquema XML en el objeto DataTable mediante el objeto XmlReader especificado.

Comentarios

El ReadXml método proporciona una manera de leer solo los datos, o bien los datos y el esquema en un DataTable desde un documento XML, mientras que el ReadXmlSchema método solo lee el esquema. Para leer los datos y el esquema, use una de las ReadXML sobrecargas que incluyen el XmlReadMode parámetro y establezca su valor en ReadSchema.

Tenga en cuenta que lo mismo es true para los WriteXml métodos y WriteXmlSchema , respectivamente. Para escribir datos XML, o tanto el esquema como los datos de DataTable, use el WriteXml método . Para escribir solo el esquema, use el WriteXmlSchema método .

Nota

InvalidOperationException Se producirá una excepción si un tipo de columna en el DataRow que se lee o se escribe en implementa IDynamicMetaObjectProvider y no implementa IXmlSerializable.

ReadXml(Stream)

Source:
DataTable.cs
Source:
DataTable.cs
Source:
DataTable.cs

Lee los datos y el esquema XML en el objeto DataTable mediante el objeto Stream especificado.

C#
public System.Data.XmlReadMode ReadXml (System.IO.Stream? stream);
C#
public System.Data.XmlReadMode ReadXml (System.IO.Stream stream);

Parámetros

stream
Stream

Objeto que deriva de Stream.

Devoluciones

XmlReadMode utilizado para leer los datos.

Ejemplos

En el ejemplo siguiente se crea un objeto DataTable que contiene dos columnas y diez filas. En el ejemplo se escribe el esquema y los DataTable datos en un flujo de memoria mediante la invocación del WriteXml método . En el ejemplo se crea un segundo DataTable y se llama al ReadXml método para rellenarlo con el esquema y los datos.

C#
private static void DemonstrateReadWriteXMLDocumentWithStream()
{
    DataTable table = CreateTestTable("XmlDemo");
    PrintValues(table, "Original table");

    // Write the schema and data to XML in a memory stream.
    System.IO.MemoryStream xmlStream = new System.IO.MemoryStream();
    table.WriteXml(xmlStream, XmlWriteMode.WriteSchema);

    // Rewind the memory stream.
    xmlStream.Position = 0;

    DataTable newTable = new DataTable();
    newTable.ReadXml(xmlStream);

    // Print out values in the table.
    PrintValues(newTable, "New table");
}

private static DataTable CreateTestTable(string tableName)
{
    // Create a test DataTable with two columns and a few rows.
    DataTable table = new DataTable(tableName);
    DataColumn column = new DataColumn("id", typeof(System.Int32));
    column.AutoIncrement = true;
    table.Columns.Add(column);

    column = new DataColumn("item", typeof(System.String));
    table.Columns.Add(column);

    // Add ten rows.
    DataRow row;
    for (int i = 0; i <= 9; i++)
    {
        row = table.NewRow();
        row["item"] = "item " + i;
        table.Rows.Add(row);
    }

    table.AcceptChanges();
    return table;
}

private static void PrintValues(DataTable table, string label)
{
    // Display the contents of the supplied DataTable:
    Console.WriteLine(label);
    foreach (DataRow row in table.Rows)
    {
        foreach (DataColumn column in table.Columns)
        {
            Console.Write("\t{0}", row[column]);
        }
        Console.WriteLine();
    }
}

Comentarios

El actual DataTable y sus descendientes se cargan con los datos de la clase proporcionada Stream. El comportamiento de este método es idéntico al del DataSet.ReadXml método, excepto que, en este caso, los datos solo se cargan para la tabla actual y sus descendientes.

El ReadXml método proporciona una manera de leer solo los datos, o bien los datos y el esquema en un DataTable desde un documento XML, mientras que el ReadXmlSchema método solo lee el esquema.

Tenga en cuenta que lo mismo es true para los WriteXml métodos y WriteXmlSchema , respectivamente. Para escribir datos XML, o tanto el esquema como los datos de DataTable, use el WriteXml método . Para escribir solo el esquema, use el WriteXmlSchema método .

Nota

InvalidOperationException Se producirá una excepción si un tipo de columna en el DataRow que se lee o se escribe en implementa IDynamicMetaObjectProvider y no implementa IXmlSerializable.

Si se especifica un esquema en línea, el esquema en línea se usa para ampliar la estructura relacional existente antes de cargar los datos. Si hay conflictos (por ejemplo, la misma columna de la misma tabla definida con distintos tipos de datos), se genera una excepción.

Si no se especifica ningún esquema en línea, la estructura relacional se extiende a través de la inferencia, según sea necesario, según la estructura del documento XML. Si el esquema no se puede extender a través de la inferencia para exponer todos los datos, se genera una excepción.

Nota

No DataSet asocia un elemento XML con su correspondiente DataColumn o DataTable cuando los caracteres XML legales como ("_") se escapan en el XML serializado. El DataSet propio solo escapa a caracteres XML no válidos en los nombres de elementos XML y, por tanto, solo puede consumir lo mismo. Cuando los caracteres legales en el nombre del elemento XML son de escape, el elemento se omite mientras se procesa.

Consulte también

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

ReadXml(TextReader)

Source:
DataTable.cs
Source:
DataTable.cs
Source:
DataTable.cs

Lee los datos y el esquema XML en el objeto DataTable mediante el objeto TextReader especificado.

C#
public System.Data.XmlReadMode ReadXml (System.IO.TextReader? reader);
C#
public System.Data.XmlReadMode ReadXml (System.IO.TextReader reader);

Parámetros

reader
TextReader

Objeto TextReader que se va a usar para leer los datos.

Devoluciones

XmlReadMode utilizado para leer los datos.

Ejemplos

En el ejemplo siguiente se crea un objeto DataTable que contiene dos columnas y diez filas. En el ejemplo se escribe el esquema y los DataTable datos en un flujo de memoria mediante la invocación del WriteXml método . En el ejemplo se crea un segundo DataTable y se llama al ReadXml método para rellenarlo con el esquema y los datos.

C#
private static void DemonstrateReadWriteXMLDocumentWithReader()
{
    DataTable table = CreateTestTable("XmlDemo");
    PrintValues(table, "Original table");

    // Write the schema and data to XML in a memory stream.
    System.IO.MemoryStream xmlStream = new System.IO.MemoryStream();
    table.WriteXml(xmlStream, XmlWriteMode.WriteSchema);

    // Rewind the memory stream.
    xmlStream.Position = 0;

    System.IO.StreamReader reader =
        new System.IO.StreamReader(xmlStream);
    DataTable newTable = new DataTable();
    newTable.ReadXml(reader);

    // Print out values in the table.
    PrintValues(newTable, "New table");
}

private static DataTable CreateTestTable(string tableName)
{
    // Create a test DataTable with two columns and a few rows.
    DataTable table = new DataTable(tableName);
    DataColumn column = new DataColumn("id", typeof(System.Int32));
    column.AutoIncrement = true;
    table.Columns.Add(column);

    column = new DataColumn("item", typeof(System.String));
    table.Columns.Add(column);

    // Add ten rows.
    DataRow row;
    for (int i = 0; i <= 9; i++)
    {
        row = table.NewRow();
        row["item"] = "item " + i;
        table.Rows.Add(row);
    }

    table.AcceptChanges();
    return table;
}

private static void PrintValues(DataTable table, string label)
{
    Console.WriteLine(label);
    foreach (DataRow row in table.Rows)
    {
        foreach (DataColumn column in table.Columns)
        {
            Console.Write("\t{0}", row[column]);
        }
        Console.WriteLine();
    }
}

Comentarios

El actual DataTable y sus descendientes se cargan con los datos de la clase proporcionada TextReader. El comportamiento de este método es idéntico al del DataSet.ReadXml método, excepto que, en este caso, los datos solo se cargan para la tabla actual y sus descendientes.

El ReadXml método proporciona una manera de leer solo los datos, o bien los datos y el esquema en un DataTable desde un documento XML, mientras que el ReadXmlSchema método solo lee el esquema.

Tenga en cuenta que lo mismo es true para los WriteXml métodos y WriteXmlSchema , respectivamente. Para escribir datos XML, o tanto el esquema como los datos de DataTable, use el WriteXml método . Para escribir solo el esquema, use el WriteXmlSchema método .

Nota

InvalidOperationException Se producirá una excepción si un tipo de columna en el DataRow que se lee o se escribe en implementa IDynamicMetaObjectProvider y no implementa IXmlSerializable.

Si se especifica un esquema en línea, el esquema en línea se usa para ampliar la estructura relacional existente antes de cargar los datos. Si hay conflictos (por ejemplo, la misma columna de la misma tabla definida con distintos tipos de datos), se genera una excepción.

Si no se especifica ningún esquema en línea, la estructura relacional se extiende a través de la inferencia, según sea necesario, según la estructura del documento XML. Si el esquema no se puede extender a través de la inferencia para exponer todos los datos, se genera una excepción.

Nota

No DataSet asocia un elemento XML con su correspondiente DataColumn o DataTable cuando los caracteres XML legales como ("_") se escapan en el XML serializado. El DataSet propio solo escapa a caracteres XML no válidos en los nombres de elementos XML y, por tanto, solo puede consumir lo mismo. Cuando los caracteres legales en el nombre del elemento XML son de escape, el elemento se omite mientras se procesa.

Consulte también

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

ReadXml(String)

Source:
DataTable.cs
Source:
DataTable.cs
Source:
DataTable.cs

Lee los datos y el esquema XML en el objeto DataTable desde el archivo especificado.

C#
public System.Data.XmlReadMode ReadXml (string fileName);

Parámetros

fileName
String

Nombre del archivo del que se van a leer los datos.

Devoluciones

XmlReadMode utilizado para leer los datos.

Ejemplos

En el ejemplo siguiente se crea un objeto DataTable que contiene dos columnas y diez filas. En el ejemplo se escribe el esquema y los DataTable datos en el disco. En el ejemplo se crea un segundo DataTable y se llama al ReadXml método para rellenarlo con el esquema y los datos.

C#
private static void DemonstrateReadWriteXMLDocumentWithString()
{
    DataTable table = CreateTestTable("XmlDemo");
    PrintValues(table, "Original table");

    string fileName = "C:\\TestData.xml";
    table.WriteXml(fileName, XmlWriteMode.WriteSchema);

    DataTable newTable = new DataTable();
    newTable.ReadXml(fileName);

    // Print out values in the table.
    PrintValues(newTable, "New table");
}

private static DataTable CreateTestTable(string tableName)
{
    // Create a test DataTable with two columns and a few rows.
    DataTable table = new DataTable(tableName);
    DataColumn column = new DataColumn("id", typeof(System.Int32));
    column.AutoIncrement = true;
    table.Columns.Add(column);

    column = new DataColumn("item", typeof(System.String));
    table.Columns.Add(column);

    // Add ten rows.
    DataRow row;
    for (int i = 0; i <= 9; i++)
    {
        row = table.NewRow();
        row["item"] = "item " + i;
        table.Rows.Add(row);
    }

    table.AcceptChanges();
    return table;
}

private static void PrintValues(DataTable table, string label)
{
    Console.WriteLine(label);
    foreach (DataRow row in table.Rows)
    {
        foreach (DataColumn column in table.Columns)
        {
            Console.Write("\t{0}", row[column]);
        }
        Console.WriteLine();
    }
}

Comentarios

El actual DataTable y sus descendientes se cargan con los datos del archivo denominado en el proporcionado String. El comportamiento de este método es idéntico al del DataSet.ReadXml método, excepto que, en este caso, los datos solo se cargan para la tabla actual y sus descendientes.

El ReadXml método proporciona una manera de leer solo los datos, o bien los datos y el esquema en un DataTable desde un documento XML, mientras que el ReadXmlSchema método solo lee el esquema.

Tenga en cuenta que lo mismo es true para los WriteXml métodos y WriteXmlSchema , respectivamente. Para escribir datos XML, o tanto el esquema como los datos de DataTable, use el WriteXml método . Para escribir solo el esquema, use el WriteXmlSchema método .

Nota

InvalidOperationException Se producirá una excepción si un tipo de columna en el DataRow que se lee o se escribe en implementa IDynamicMetaObjectProvider y no implementa IXmlSerializable.

Si se especifica un esquema en línea, el esquema en línea se usa para ampliar la estructura relacional existente antes de cargar los datos. Si hay conflictos (por ejemplo, la misma columna de la misma tabla definida con distintos tipos de datos), se genera una excepción.

Si no se especifica ningún esquema en línea, la estructura relacional se extiende a través de la inferencia, según sea necesario, según la estructura del documento XML. Si el esquema no se puede extender a través de la inferencia para exponer todos los datos, se genera una excepción.

Nota

No DataSet asocia un elemento XML con su correspondiente DataColumn o DataTable cuando los caracteres XML legales como ("_") se escapan en el XML serializado. El DataSet propio solo escapa a caracteres XML no válidos en los nombres de elementos XML y, por tanto, solo puede consumir lo mismo. Cuando los caracteres legales en el nombre del elemento XML son de escape, el elemento se omite mientras se procesa.

C#
using System.Data;
public class A {
   static void Main(string[] args) {
      DataTable tabl = new DataTable("mytable");
      tabl.Columns.Add(new DataColumn("id", typeof(int)));
      for (int i = 0; i < 10; i++) {
         DataRow row = tabl.NewRow();
         row["id"] = i;
         tabl.Rows.Add(row);
      }
      tabl.WriteXml("f.xml", XmlWriteMode.WriteSchema);
      DataTable newt = new DataTable();
      newt.ReadXml("f.xml");
   }
}

Consulte también

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

ReadXml(XmlReader)

Source:
DataTable.cs
Source:
DataTable.cs
Source:
DataTable.cs

Lee datos y el esquema XML en el objeto DataTable mediante el objeto XmlReader especificado.

C#
public System.Data.XmlReadMode ReadXml (System.Xml.XmlReader? reader);
C#
public System.Data.XmlReadMode ReadXml (System.Xml.XmlReader reader);

Parámetros

reader
XmlReader

Objeto XmlReader que se va a usar para leer los datos.

Devoluciones

XmlReadMode utilizado para leer los datos.

Ejemplos

En el ejemplo siguiente se crea un objeto DataTable que contiene dos columnas y diez filas. En el ejemplo se escribe el esquema y los DataTable datos en .XmlReader En el ejemplo se crea un segundo DataTable y se llama al ReadXml método para rellenarlo con el esquema y los datos de la XmlReader instancia.

C#
private static void DemonstrateReadWriteXMLDocumentWithReader()
{
    DataTable table = CreateTestTable("XmlDemo");
    PrintValues(table, "Original table");

    // Write the schema and data to XML in a memory stream.
    System.IO.MemoryStream xmlStream = new System.IO.MemoryStream();
    table.WriteXml(xmlStream, XmlWriteMode.WriteSchema);

    // Rewind the memory stream.
    xmlStream.Position = 0;

    System.Xml.XmlTextReader reader =
        new System.Xml.XmlTextReader(xmlStream);
    DataTable newTable = new DataTable();
    newTable.ReadXml(reader);

    // Print out values in the table.
    PrintValues(newTable, "New table");
}

private static DataTable CreateTestTable(string tableName)
{
    // Create a test DataTable with two columns and a few rows.
    DataTable table = new DataTable(tableName);
    DataColumn column = new DataColumn("id", typeof(System.Int32));
    column.AutoIncrement = true;
    table.Columns.Add(column);

    column = new DataColumn("item", typeof(System.String));
    table.Columns.Add(column);

    // Add ten rows.
    DataRow row;
    for (int i = 0; i <= 9; i++)
    {
        row = table.NewRow();
        row["item"] = "item " + i;
        table.Rows.Add(row);
    }

    table.AcceptChanges();
    return table;
}

private static void PrintValues(DataTable table, string label)
{
    Console.WriteLine(label);
    foreach (DataRow row in table.Rows)
    {
        foreach (DataColumn column in table.Columns)
        {
            Console.Write("\t{0}", row[column]);
        }
        Console.WriteLine();
    }
}

Comentarios

El actual DataTable y sus descendientes se cargan con los datos del archivo denominado en el proporcionado XmlReader. El comportamiento de este método es idéntico al del ReadXml método, excepto que, en este caso, los datos solo se cargan para la tabla actual y sus descendientes.

El ReadXml método proporciona una manera de leer solo los datos, o bien los datos y el esquema en un DataTable desde un documento XML, mientras que el ReadXmlSchema método solo lee el esquema.

Tenga en cuenta que lo mismo es true para los WriteXml métodos y WriteXmlSchema , respectivamente. Para escribir datos XML, o tanto el esquema como los datos de DataTable, use el WriteXml método . Para escribir solo el esquema, use el WriteXmlSchema método .

Nota

InvalidOperationException Se producirá una excepción si un tipo de columna en el DataRow que se lee o se escribe en implementa IDynamicMetaObjectProvider y no implementa IXmlSerializable.

Si se especifica un esquema en línea, el esquema en línea se usa para ampliar la estructura relacional existente antes de cargar los datos. Si hay conflictos (por ejemplo, la misma columna de la misma tabla definida con distintos tipos de datos), se genera una excepción.

Si no se especifica ningún esquema en línea, la estructura relacional se extiende a través de la inferencia, según sea necesario, según la estructura del documento XML. Si el esquema no se puede extender a través de la inferencia para exponer todos los datos, se genera una excepción.

Nota

No DataSet asocia un elemento XML con su correspondiente DataColumn o DataTable cuando los caracteres XML legales como ("_") se escapan en el XML serializado. El DataSet propio solo escapa a caracteres XML no válidos en los nombres de elementos XML y, por tanto, solo puede consumir lo mismo. Cuando los caracteres legales en el nombre del elemento XML son de escape, el elemento se omite mientras se procesa.

Consulte también

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1