DataTable.ReadXml Método

Definición

Lee el esquema XML y los datos en .DataTable

Sobrecargas

Nombre Description
ReadXml(Stream)

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

ReadXml(TextReader)

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

ReadXml(String)

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

ReadXml(XmlReader)

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

Comentarios

El ReadXml método proporciona una manera de leer solo los datos, o tanto los datos como el esquema en un desde un DataTable 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 ReadSchemaen .

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

Note

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

ReadXml(Stream)

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

public:
 System::Data::XmlReadMode ReadXml(System::IO::Stream ^ stream);
public System.Data.XmlReadMode ReadXml(System.IO.Stream stream);
member this.ReadXml : System.IO.Stream -> System.Data.XmlReadMode
Public Function ReadXml (stream As Stream) As XmlReadMode

Parámetros

stream
Stream

Objeto que deriva de Stream.

Devoluciones

que XmlReadMode se usa para leer los datos.

Ejemplos

En el ejemplo siguiente se crea un DataTable objeto que contiene dos columnas y diez filas. En el ejemplo se escribe el esquema y los DataTable datos en un flujo de memoria invocando el 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.

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();
    }
}
Private Sub DemonstrateReadWriteXMLDocumentWithStream()
  Dim table As DataTable = CreateTestTable("XmlDemo")
  PrintValues(table, "Original table")

  ' Write the schema and data to XML in a memory stream.
  Dim xmlStream As New System.IO.MemoryStream()
  table.WriteXml(xmlStream, XmlWriteMode.WriteSchema)

  ' Rewind the memory stream.
  xmlStream.Position = 0

  Dim newTable As New DataTable
  newTable.ReadXml(xmlStream)

  ' Print out values in the table.
  PrintValues(newTable, "New Table")
End Sub

Private Function CreateTestTable(ByVal tableName As String) As DataTable
  ' Create a test DataTable with two columns and a few rows.
  Dim table As New DataTable(tableName)
  Dim column As New DataColumn("id", GetType(System.Int32))
  column.AutoIncrement = True
  table.Columns.Add(column)

  column = New DataColumn("item", GetType(System.String))
  table.Columns.Add(column)

  ' Add ten rows.
  Dim row As DataRow
  For i As Integer = 0 To 9
    row = table.NewRow()
    row("item") = "item " & i
    table.Rows.Add(row)
  Next i

  table.AcceptChanges()
  Return table
End Function

Private Sub PrintValues(ByVal table As DataTable, ByVal label As String)
  ' Display the contents of the supplied DataTable:
  Console.WriteLine(label)
  For Each row As DataRow In table.Rows
    For Each column As DataColumn In table.Columns
      Console.Write("{0}{1}", ControlChars.Tab, row(column))
    Next column
    Console.WriteLine()
  Next row
End Sub

Comentarios

El actual DataTable y sus descendientes se cargan con los datos del proporcionado Stream. El comportamiento de este método es idéntico al del DataSet.ReadXml método , salvo 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 tanto los datos como el esquema en un desde un DataTable documento XML, mientras que el ReadXmlSchema método solo lee el esquema.

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

Note

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

Si se especifica un esquema en línea, el esquema en línea se usa para extender la estructura relacional existente antes de cargar los datos. Si hay conflictos (por ejemplo, la misma columna de la misma tabla definida con tipos de datos diferentes), 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.

Note

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

Consulte también

Se aplica a

ReadXml(TextReader)

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

public:
 System::Data::XmlReadMode ReadXml(System::IO::TextReader ^ reader);
public System.Data.XmlReadMode ReadXml(System.IO.TextReader reader);
member this.ReadXml : System.IO.TextReader -> System.Data.XmlReadMode
Public Function ReadXml (reader As TextReader) As XmlReadMode

Parámetros

reader
TextReader

TextReader que se usará para leer los datos.

Devoluciones

que XmlReadMode se usa para leer los datos.

Ejemplos

En el ejemplo siguiente se crea un DataTable objeto que contiene dos columnas y diez filas. En el ejemplo se escribe el esquema y los DataTable datos en un flujo de memoria invocando el 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.

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();
    }
}
Private Sub DemonstrateReadWriteXMLDocumentWithReader()
  Dim table As DataTable = CreateTestTable("XmlDemo")
  PrintValues(table, "Original table")

  ' Write the schema and data to XML in a memory stream.
  Dim xmlStream As New System.IO.MemoryStream()
  table.WriteXml(xmlStream, XmlWriteMode.WriteSchema)

  ' Rewind the memory stream.
  xmlStream.Position = 0

  Dim reader As New System.IO.StreamReader(xmlStream)
  Dim newTable As New DataTable
  newTable.ReadXml(reader)

  ' Print out values in the table.
  PrintValues(newTable, "New Table")
End Sub

Private Function CreateTestTable(ByVal tableName As String) _
  As DataTable
  ' Create a test DataTable with two columns and a few rows.
  Dim table As New DataTable(tableName)
  Dim column As New DataColumn("id", GetType(System.Int32))
  column.AutoIncrement = True
  table.Columns.Add(column)

  column = New DataColumn("item", GetType(System.String))
  table.Columns.Add(column)

  ' Add ten rows.
  Dim row As DataRow
  For i As Integer = 0 To 9
    row = table.NewRow()
    row("item") = "item " & i
    table.Rows.Add(row)
  Next i

  table.AcceptChanges()
  Return table
End Function

Private Sub PrintValues(ByVal table As DataTable, _
  ByVal label As String)
  Console.WriteLine(label)
  For Each row As DataRow In table.Rows
    For Each column As DataColumn In table.Columns
      Console.Write("{0}{1}", ControlChars.Tab, row(column))
    Next column
    Console.WriteLine()
  Next row
End Sub

Comentarios

El actual DataTable y sus descendientes se cargan con los datos del proporcionado TextReader. El comportamiento de este método es idéntico al del DataSet.ReadXml método , salvo 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 tanto los datos como el esquema en un desde un DataTable documento XML, mientras que el ReadXmlSchema método solo lee el esquema.

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

Note

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

Si se especifica un esquema en línea, el esquema en línea se usa para extender la estructura relacional existente antes de cargar los datos. Si hay conflictos (por ejemplo, la misma columna de la misma tabla definida con tipos de datos diferentes), 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.

Note

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

Consulte también

Se aplica a

ReadXml(String)

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

public:
 System::Data::XmlReadMode ReadXml(System::String ^ fileName);
public System.Data.XmlReadMode ReadXml(string fileName);
member this.ReadXml : string -> System.Data.XmlReadMode
Public Function ReadXml (fileName As String) As XmlReadMode

Parámetros

fileName
String

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

Devoluciones

que XmlReadMode se usa para leer los datos.

Ejemplos

En el ejemplo siguiente se crea un DataTable objeto 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.

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();
    }
}
Private Sub DemonstrateReadWriteXMLDocumentWithString()
  Dim table As DataTable = CreateTestTable("XmlDemo")
  PrintValues(table, "Original table")

  ' Write the schema and data to XML in a file.
  Dim fileName As String = "C:\TestData.xml"
  table.WriteXml(fileName, XmlWriteMode.WriteSchema)

  Dim newTable As New DataTable
  newTable.ReadXml(fileName)

  ' Print out values in the table.
  PrintValues(newTable, "New Table")
End Sub

Private Function CreateTestTable(ByVal tableName As String) _
  As DataTable

  ' Create a test DataTable with two columns and a few rows.
  Dim table As New DataTable(tableName)
  Dim column As New DataColumn("id", GetType(System.Int32))
  column.AutoIncrement = True
  table.Columns.Add(column)

  column = New DataColumn("item", GetType(System.String))
  table.Columns.Add(column)

  ' Add ten rows.
  Dim row As DataRow
  For i As Integer = 0 To 9
    row = table.NewRow()
    row("item") = "item " & i
    table.Rows.Add(row)
  Next i

  table.AcceptChanges()
  Return table
End Function

Private Sub PrintValues(ByVal table As DataTable, _
  ByVal label As String)
  Console.WriteLine(label)
  For Each row As DataRow In table.Rows
    For Each column As DataColumn In table.Columns
      Console.Write("{0}{1}", ControlChars.Tab, row(column))
    Next column
    Console.WriteLine()
  Next row
End Sub

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 , salvo 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 tanto los datos como el esquema en un desde un DataTable documento XML, mientras que el ReadXmlSchema método solo lee el esquema.

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

Note

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

Si se especifica un esquema en línea, el esquema en línea se usa para extender la estructura relacional existente antes de cargar los datos. Si hay conflictos (por ejemplo, la misma columna de la misma tabla definida con tipos de datos diferentes), 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.

Note

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

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

ReadXml(XmlReader)

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

public:
 System::Data::XmlReadMode ReadXml(System::Xml::XmlReader ^ reader);
public System.Data.XmlReadMode ReadXml(System.Xml.XmlReader reader);
member this.ReadXml : System.Xml.XmlReader -> System.Data.XmlReadMode
Public Function ReadXml (reader As XmlReader) As XmlReadMode

Parámetros

reader
XmlReader

XmlReader que se usará para leer los datos.

Devoluciones

que XmlReadMode se usa para leer los datos.

Ejemplos

En el ejemplo siguiente se crea un DataTable objeto 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.

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();
    }
}
Private Sub DemonstrateReadWriteXMLDocumentWithReader()
  Dim table As DataTable = CreateTestTable("XmlDemo")
  PrintValues(table, "Original table")

  ' Write the schema and data to XML in a memory stream.
  Dim xmlStream As New System.IO.MemoryStream()
  table.WriteXml(xmlStream, XmlWriteMode.WriteSchema)

  ' Rewind the memory stream.
  xmlStream.Position = 0

  Dim reader As New System.Xml.XmlTextReader(xmlStream)
  Dim newTable As New DataTable
  newTable.ReadXml(reader)

  ' Print out values in the table.
  PrintValues(newTable, "New Table")
End Sub

Private Function CreateTestTable(ByVal tableName As String) _
  As DataTable
  ' Create a test DataTable with two columns and a few rows.
  Dim table As New DataTable(tableName)
  Dim column As New DataColumn("id", GetType(System.Int32))
  column.AutoIncrement = True
  table.Columns.Add(column)

  column = New DataColumn("item", GetType(System.String))
  table.Columns.Add(column)

  ' Add ten rows.
  Dim row As DataRow
  For i As Integer = 0 To 9
    row = table.NewRow()
    row("item") = "item " & i
    table.Rows.Add(row)
  Next i

  table.AcceptChanges()
  Return table
End Function

Private Sub PrintValues(ByVal table As DataTable, _
  ByVal label As String)
  Console.WriteLine(label)
  For Each row As DataRow In table.Rows
    For Each column As DataColumn In table.Columns
      Console.Write("{0}{1}", ControlChars.Tab, row(column))
    Next column
    Console.WriteLine()
  Next row
End Sub

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 , salvo 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 tanto los datos como el esquema en un desde un DataTable documento XML, mientras que el ReadXmlSchema método solo lee el esquema.

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

Note

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

Si se especifica un esquema en línea, el esquema en línea se usa para extender la estructura relacional existente antes de cargar los datos. Si hay conflictos (por ejemplo, la misma columna de la misma tabla definida con tipos de datos diferentes), 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.

Note

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

Consulte también

Se aplica a