Ler em inglês

Compartilhar via


DataTable.ReadXml Método

Definição

Lê o esquema XML e os dados para o DataTable.

Sobrecargas

ReadXml(Stream)

Lê o esquema XML e dados para o DataTable usando o Stream especificado.

ReadXml(TextReader)

Lê o esquema XML e dados para o DataTable usando o TextReader especificado.

ReadXml(String)

Lê o esquema XML e dados para o DataTable do arquivo especificado.

ReadXml(XmlReader)

Lê o esquema XML e dados no DataTable usando o XmlReader especificado.

Comentários

O método ReadXml fornece uma maneira de ler apenas dados ou dados e esquema em um DataTable a partir de um documento XML, e o método ReadXmlSchema lê apenas o esquema. Para ler dados e esquema, use uma das ReadXML sobrecargas que incluem o XmlReadMode parâmetro e defina seu valor como ReadSchema.

Observe que o mesmo é verdadeiro para os métodos WriteXml e WriteXmlSchema, respectivamente. Para gravar dados XML ou o esquema e os dados do DataTable, use o método WriteXml. Para gravar apenas o esquema, use o método WriteXmlSchema.

Observação

Um InvalidOperationException será lançado se um tipo de coluna no DataRow de leitura ou gravação implementa IDynamicMetaObjectProvider e não implementa IXmlSerializable.

ReadXml(Stream)

Origem:
DataTable.cs
Origem:
DataTable.cs
Origem:
DataTable.cs

Lê o esquema XML e dados para o DataTable usando o Stream especificado.

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

Parâmetros

stream
Stream

Um objeto que deriva de Stream.

Retornos

O XmlReadMode usado para ler os dados.

Exemplos

O exemplo a seguir cria um DataTable que contém duas colunas e dez linhas. O exemplo grava o esquema e os DataTable dados em um fluxo de memória invocando o WriteXml método . O exemplo cria um segundo DataTable e chama o ReadXml método para preenchê-lo com esquema e dados.

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();
    }
}

Comentários

O atual DataTable e seus descendentes são carregados com os dados do fornecido Stream. O comportamento desse método é idêntico ao do DataSet.ReadXml método , exceto que, nesse caso, os dados são carregados apenas para a tabela atual e seus descendentes.

O método ReadXml fornece uma maneira de ler apenas dados ou dados e esquema em um DataTable a partir de um documento XML, e o método ReadXmlSchema lê apenas o esquema.

Observe que o mesmo é verdadeiro para os métodos WriteXml e WriteXmlSchema, respectivamente. Para gravar dados XML ou o esquema e os dados do DataTable, use o método WriteXml. Para gravar apenas o esquema, use o método WriteXmlSchema.

Observação

Um InvalidOperationException será lançado se um tipo de coluna no DataRow de leitura ou gravação implementa IDynamicMetaObjectProvider e não implementa IXmlSerializable.

Se um esquema embutido for especificado, o esquema embutido será usado para estender a estrutura relacional existente antes de carregar os dados. Se houver algum conflito (por exemplo, a mesma coluna na mesma tabela definida com tipos de dados diferentes), uma exceção será gerada.

Se nenhum esquema embutido for especificado, a estrutura relacional será estendida por meio de inferência, conforme necessário, de acordo com a estrutura do documento XML. Se o esquema não puder ser estendido por meio de inferência para expor todos os dados, uma exceção será gerada.

Observação

O DataSet não associa um elemento XML ao DataColumn correspondente DataTable quando caracteres XML legais como (“_”) escapam no XML serializável. O próprio DataSet só escapa com caracteres XML ilegais em nomes de elemento XML e, assim, só pode consumir o mesmo. Quando os caracteres legais no nome de elemento XML são escapadas, o elemento é ignorado durante o processamento.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.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)

Origem:
DataTable.cs
Origem:
DataTable.cs
Origem:
DataTable.cs

Lê o esquema XML e dados para o DataTable usando o TextReader especificado.

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

Parâmetros

reader
TextReader

O TextReader que será usado para ler os dados.

Retornos

O XmlReadMode usado para ler os dados.

Exemplos

O exemplo a seguir cria um DataTable que contém duas colunas e dez linhas. O exemplo grava o esquema e os DataTable dados em um fluxo de memória invocando o WriteXml método . O exemplo cria um segundo DataTable e chama o ReadXml método para preenchê-lo com esquema e dados.

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();
    }
}

Comentários

O atual DataTable e seus descendentes são carregados com os dados do fornecido TextReader. O comportamento desse método é idêntico ao do DataSet.ReadXml método , exceto que, nesse caso, os dados são carregados apenas para a tabela atual e seus descendentes.

O método ReadXml fornece uma maneira de ler apenas dados ou dados e esquema em um DataTable a partir de um documento XML, e o método ReadXmlSchema lê apenas o esquema.

Observe que o mesmo é verdadeiro para os métodos WriteXml e WriteXmlSchema, respectivamente. Para gravar dados XML ou o esquema e os dados do DataTable, use o método WriteXml. Para gravar apenas o esquema, use o método WriteXmlSchema.

Observação

Um InvalidOperationException será lançado se um tipo de coluna no DataRow de leitura ou gravação implementa IDynamicMetaObjectProvider e não implementa IXmlSerializable.

Se um esquema embutido for especificado, o esquema embutido será usado para estender a estrutura relacional existente antes de carregar os dados. Se houver algum conflito (por exemplo, a mesma coluna na mesma tabela definida com tipos de dados diferentes), uma exceção será gerada.

Se nenhum esquema embutido for especificado, a estrutura relacional será estendida por meio de inferência, conforme necessário, de acordo com a estrutura do documento XML. Se o esquema não puder ser estendido por meio de inferência para expor todos os dados, uma exceção será gerada.

Observação

O DataSet não associa um elemento XML ao DataColumn correspondente DataTable quando caracteres XML legais como (“_”) escapam no XML serializável. O próprio DataSet só escapa com caracteres XML ilegais em nomes de elemento XML e, assim, só pode consumir o mesmo. Quando os caracteres legais no nome de elemento XML são escapadas, o elemento é ignorado durante o processamento.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.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)

Origem:
DataTable.cs
Origem:
DataTable.cs
Origem:
DataTable.cs

Lê o esquema XML e dados para o DataTable do arquivo especificado.

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

Parâmetros

fileName
String

O nome do arquivo do qual os dados serão lidos.

Retornos

O XmlReadMode usado para ler os dados.

Exemplos

O exemplo a seguir cria um DataTable que contém duas colunas e dez linhas. O exemplo grava o esquema e os DataTable dados no disco. O exemplo cria um segundo DataTable e chama o ReadXml método para preenchê-lo com esquema e dados.

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();
    }
}

Comentários

O atual DataTable e seus descendentes são carregados com os dados do arquivo nomeado no fornecido String. O comportamento desse método é idêntico ao do DataSet.ReadXml método , exceto que, nesse caso, os dados são carregados apenas para a tabela atual e seus descendentes.

O método ReadXml fornece uma maneira de ler apenas dados ou dados e esquema em um DataTable a partir de um documento XML, e o método ReadXmlSchema lê apenas o esquema.

Observe que o mesmo é verdadeiro para os métodos WriteXml e WriteXmlSchema, respectivamente. Para gravar dados XML ou o esquema e os dados do DataTable, use o método WriteXml. Para gravar apenas o esquema, use o método WriteXmlSchema.

Observação

Um InvalidOperationException será lançado se um tipo de coluna no DataRow de leitura ou gravação implementa IDynamicMetaObjectProvider e não implementa IXmlSerializable.

Se um esquema embutido for especificado, o esquema embutido será usado para estender a estrutura relacional existente antes de carregar os dados. Se houver algum conflito (por exemplo, a mesma coluna na mesma tabela definida com tipos de dados diferentes), uma exceção será gerada.

Se nenhum esquema embutido for especificado, a estrutura relacional será estendida por meio de inferência, conforme necessário, de acordo com a estrutura do documento XML. Se o esquema não puder ser estendido por meio de inferência para expor todos os dados, uma exceção será gerada.

Observação

O DataSet não associa um elemento XML ao DataColumn correspondente DataTable quando caracteres XML legais como (“_”) escapam no XML serializável. O próprio DataSet só escapa com caracteres XML ilegais em nomes de elemento XML e, assim, só pode consumir o mesmo. Quando os caracteres legais no nome de elemento XML são escapadas, o elemento é ignorado durante o processamento.

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

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.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)

Origem:
DataTable.cs
Origem:
DataTable.cs
Origem:
DataTable.cs

Lê o esquema XML e dados no DataTable usando o XmlReader especificado.

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

Parâmetros

reader
XmlReader

O XmlReader que será usado para ler os dados.

Retornos

O XmlReadMode usado para ler os dados.

Exemplos

O exemplo a seguir cria um DataTable que contém duas colunas e dez linhas. O exemplo grava o esquema e os DataTable dados em um XmlReader. O exemplo cria um segundo DataTable e chama o ReadXml método para preenchê-lo com esquema e dados da XmlReader instância.

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();
    }
}

Comentários

O atual DataTable e seus descendentes são carregados com os dados do arquivo nomeado no fornecido XmlReader. O comportamento desse método é idêntico ao do ReadXml método , exceto que, nesse caso, os dados são carregados apenas para a tabela atual e seus descendentes.

O método ReadXml fornece uma maneira de ler apenas dados ou dados e esquema em um DataTable a partir de um documento XML, e o método ReadXmlSchema lê apenas o esquema.

Observe que o mesmo é verdadeiro para os métodos WriteXml e WriteXmlSchema, respectivamente. Para gravar dados XML ou o esquema e os dados do DataTable, use o método WriteXml. Para gravar apenas o esquema, use o método WriteXmlSchema.

Observação

Um InvalidOperationException será lançado se um tipo de coluna no DataRow de leitura ou gravação implementa IDynamicMetaObjectProvider e não implementa IXmlSerializable.

Se um esquema embutido for especificado, o esquema embutido será usado para estender a estrutura relacional existente antes de carregar os dados. Se houver algum conflito (por exemplo, a mesma coluna na mesma tabela definida com tipos de dados diferentes), uma exceção será gerada.

Se nenhum esquema embutido for especificado, a estrutura relacional será estendida por meio de inferência, conforme necessário, de acordo com a estrutura do documento XML. Se o esquema não puder ser estendido por meio de inferência para expor todos os dados, uma exceção será gerada.

Observação

O DataSet não associa um elemento XML ao DataColumn correspondente DataTable quando caracteres XML legais como (“_”) escapam no XML serializável. O próprio DataSet só escapa com caracteres XML ilegais em nomes de elemento XML e, assim, só pode consumir o mesmo. Quando os caracteres legais no nome de elemento XML são escapadas, o elemento é ignorado durante o processamento.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.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