Číst v angličtině

Sdílet prostřednictvím


DataTable.ReadXml Metoda

Definice

Načte schéma a data XML do objektu DataTable.

Přetížení

ReadXml(Stream)

Načte schéma XML a data do objektu DataTable pomocí zadaného Streamobjektu .

ReadXml(TextReader)

Načte schéma XML a data do objektu DataTable pomocí zadaného TextReaderobjektu .

ReadXml(String)

Načte ze zadaného souboru schéma XML a data.DataTable

ReadXml(XmlReader)

Načte schéma a data XML do objektu DataTable pomocí zadaného XmlReaderobjektu .

Poznámky

Metoda ReadXml poskytuje způsob, jak číst buď pouze data, nebo jak data a schéma z DataTable dokumentu XML, zatímco ReadXmlSchema metoda čte pouze schéma. Pokud chcete číst data i schéma, použijte jedno z ReadXML přetížení, které obsahuje XmlReadMode parametr, a nastavte jeho hodnotu na ReadSchema.

Všimněte si, že totéž platí pro WriteXml metody a WriteXmlSchema v uvedeném pořadí. K zápisu dat XML nebo schématu i dat z objektu DataTablepoužijte metodu WriteXml . K zápisu pouze schématu použijte metodu WriteXmlSchema .

Poznámka

Vyvolá InvalidOperationException se, pokud typ sloupce v objektu, který DataRow se čte z nebo zapisuje IDynamicMetaObjectProvider do implementace, a neimplementuje IXmlSerializable.

ReadXml(Stream)

Zdroj:
DataTable.cs
Zdroj:
DataTable.cs
Zdroj:
DataTable.cs

Načte schéma XML a data do objektu DataTable pomocí zadaného Streamobjektu .

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

Parametry

stream
Stream

Objekt, který je odvozen z Stream.

Návraty

Slouží XmlReadMode ke čtení dat.

Příklady

Následující příklad vytvoří objekt obsahující DataTable dva sloupce a deset řádků. Příklad zapíše DataTable schéma a data do datového proudu paměti vyvoláním WriteXml metody . Příklad vytvoří sekundu DataTable a zavolá metodu , ReadXml která ji naplní schématem a daty.

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

Poznámky

Proud DataTable a jeho sestupné hodnoty jsou načteny daty ze zadaného Streamobjektu . Chování této metody je stejné jako DataSet.ReadXml chování metody, s výjimkou toho, že v tomto případě jsou data načtena pouze pro aktuální tabulku a její potomky.

Metoda ReadXml poskytuje způsob, jak číst buď data pouze, nebo jak data, tak schéma do DataTable z dokumentu XML, zatímco ReadXmlSchema metoda čte pouze schéma.

Všimněte si, že totéž platí pro WriteXml metody a WriteXmlSchema v uvedeném pořadí. K zápisu dat XML nebo schématu i dat z objektu DataTablepoužijte metodu WriteXml . Pokud chcete napsat pouze schéma, použijte metodu WriteXmlSchema .

Poznámka

Vyvolá InvalidOperationException se, pokud typ sloupce v objektu DataRow , ze kterého se čte nebo do kterého se zapisuje, implementuje IDynamicMetaObjectProvider a neimplementuje IXmlSerializable.

Pokud je zadáno vložené schéma, rozšiřuje toto vložené schéma stávající relační strukturu před načtením dat. Pokud se vyskytnou jakékoli konflikty (například stejný sloupec je ve stejné tabulce definován s použitím různých typů dat), je vyvolána výjimka.

Pokud není zadáno žádné vložené schéma, rozšiřuje se relační struktura v případě potřeby prostřednictvím odvození podle struktury dokumentu XML. Pokud schéma nelze rozšířit prostřednictvím odvození tak, aby byla vystavena všechna data, je vyvolána výjimka.

Poznámka

Nepřidružuje DataSet element XML s jeho odpovídající DataColumn nebo DataTable když právní XML znaky jako ("_") jsou řídicí v serializované XML. Sám DataSet o sobě pouze uchytá neplatné znaky XML v názvech elementů XML, a proto může používat pouze stejné. Pokud jsou povolené znaky v názvu elementu XML uvozeny řídicími znaky, je element při zpracování ignorován.

Viz také

Platí pro

ReadXml(TextReader)

Zdroj:
DataTable.cs
Zdroj:
DataTable.cs
Zdroj:
DataTable.cs

Načte schéma XML a data do objektu DataTable pomocí zadaného TextReaderobjektu .

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

Parametry

reader
TextReader

Hodnota TextReader , která se použije ke čtení dat.

Návraty

Slouží XmlReadMode ke čtení dat.

Příklady

Následující příklad vytvoří objekt obsahující DataTable dva sloupce a deset řádků. Příklad zapíše DataTable schéma a data do datového proudu paměti vyvoláním WriteXml metody . Příklad vytvoří sekundu DataTable a zavolá metodu , ReadXml která ji naplní schématem a daty.

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

Poznámky

Proud DataTable a jeho sestupné hodnoty jsou načteny daty ze zadaného TextReaderobjektu . Chování této metody je stejné jako DataSet.ReadXml chování metody, s výjimkou toho, že v tomto případě jsou data načtena pouze pro aktuální tabulku a její potomky.

Metoda ReadXml poskytuje způsob, jak číst buď data pouze, nebo jak data, tak schéma do DataTable z dokumentu XML, zatímco ReadXmlSchema metoda čte pouze schéma.

Všimněte si, že totéž platí pro WriteXml metody a WriteXmlSchema v uvedeném pořadí. K zápisu dat XML nebo schématu i dat z objektu DataTablepoužijte metodu WriteXml . Pokud chcete napsat pouze schéma, použijte metodu WriteXmlSchema .

Poznámka

Vyvolá InvalidOperationException se, pokud typ sloupce v objektu DataRow , ze kterého se čte nebo do kterého se zapisuje, implementuje IDynamicMetaObjectProvider a neimplementuje IXmlSerializable.

Pokud je zadáno vložené schéma, rozšiřuje toto vložené schéma stávající relační strukturu před načtením dat. Pokud se vyskytnou jakékoli konflikty (například stejný sloupec je ve stejné tabulce definován s použitím různých typů dat), je vyvolána výjimka.

Pokud není zadáno žádné vložené schéma, rozšiřuje se relační struktura v případě potřeby prostřednictvím odvození podle struktury dokumentu XML. Pokud schéma nelze rozšířit prostřednictvím odvození tak, aby byla vystavena všechna data, je vyvolána výjimka.

Poznámka

Nepřidružuje DataSet element XML s jeho odpovídající DataColumn nebo DataTable když právní XML znaky jako ("_") jsou řídicí v serializované XML. Sám DataSet o sobě pouze uchytá neplatné znaky XML v názvech elementů XML, a proto může používat pouze stejné. Pokud jsou povolené znaky v názvu elementu XML uvozeny řídicími znaky, je element při zpracování ignorován.

Viz také

Platí pro

ReadXml(String)

Zdroj:
DataTable.cs
Zdroj:
DataTable.cs
Zdroj:
DataTable.cs

Načte ze zadaného souboru schéma XML a data.DataTable

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

Parametry

fileName
String

Název souboru, ze kterého se mají číst data.

Návraty

Slouží XmlReadMode ke čtení dat.

Příklady

Následující příklad vytvoří objekt obsahující DataTable dva sloupce a deset řádků. Příklad zapíše DataTable schéma a data na disk. Příklad vytvoří sekundu DataTable a zavolá metodu , ReadXml která ji naplní schématem a daty.

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

Poznámky

Aktuální DataTable a jeho potomci se načtou s daty ze souboru s názvem v zadaném Stringsouboru . Chování této metody je stejné jako DataSet.ReadXml chování metody, s výjimkou toho, že v tomto případě jsou data načtena pouze pro aktuální tabulku a její potomky.

Metoda ReadXml poskytuje způsob, jak číst buď data pouze, nebo jak data, tak schéma do DataTable z dokumentu XML, zatímco ReadXmlSchema metoda čte pouze schéma.

Všimněte si, že totéž platí pro WriteXml metody a WriteXmlSchema v uvedeném pořadí. K zápisu dat XML nebo schématu i dat z objektu DataTablepoužijte metodu WriteXml . Pokud chcete napsat pouze schéma, použijte metodu WriteXmlSchema .

Poznámka

Vyvolá InvalidOperationException se, pokud typ sloupce v objektu DataRow , ze kterého se čte nebo do kterého se zapisuje, implementuje IDynamicMetaObjectProvider a neimplementuje IXmlSerializable.

Pokud je zadáno vložené schéma, rozšiřuje toto vložené schéma stávající relační strukturu před načtením dat. Pokud se vyskytnou jakékoli konflikty (například stejný sloupec je ve stejné tabulce definován s použitím různých typů dat), je vyvolána výjimka.

Pokud není zadáno žádné vložené schéma, rozšiřuje se relační struktura v případě potřeby prostřednictvím odvození podle struktury dokumentu XML. Pokud schéma nelze rozšířit prostřednictvím odvození tak, aby byla vystavena všechna data, je vyvolána výjimka.

Poznámka

Nepřidružuje DataSet element XML s jeho odpovídající DataColumn nebo DataTable když právní XML znaky jako ("_") jsou řídicí v serializované XML. Sám DataSet o sobě pouze uchytá neplatné znaky XML v názvech elementů XML, a proto může používat pouze stejné. Pokud jsou povolené znaky v názvu elementu XML uvozeny řídicími znaky, je element při zpracování ignorován.

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

Viz také

Platí pro

ReadXml(XmlReader)

Zdroj:
DataTable.cs
Zdroj:
DataTable.cs
Zdroj:
DataTable.cs

Načte schéma XML a data do objektu DataTable pomocí zadaného XmlReaderobjektu .

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

Parametry

reader
XmlReader

Hodnota XmlReader , která se použije ke čtení dat.

Návraty

Slouží XmlReadMode ke čtení dat.

Příklady

Následující příklad vytvoří objekt obsahující DataTable dva sloupce a deset řádků. Příklad zapíše DataTable schéma a data do objektu XmlReader. Příklad vytvoří sekundu DataTable a zavolá metodu ReadXml , která ji vyplní schématem a daty XmlReader z instance.

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

Poznámky

Aktuální DataTable a jeho potomci se načtou s daty ze souboru s názvem v zadaném XmlReadersouboru . Chování této metody je stejné jako ReadXml chování metody, s výjimkou toho, že v tomto případě jsou data načtena pouze pro aktuální tabulku a její potomky.

Metoda ReadXml poskytuje způsob, jak číst buď data pouze, nebo jak data, tak schéma do DataTable z dokumentu XML, zatímco ReadXmlSchema metoda čte pouze schéma.

Všimněte si, že totéž platí pro WriteXml metody a WriteXmlSchema v uvedeném pořadí. K zápisu dat XML nebo schématu i dat z objektu DataTablepoužijte metodu WriteXml . Pokud chcete napsat pouze schéma, použijte metodu WriteXmlSchema .

Poznámka

Vyvolá InvalidOperationException se, pokud typ sloupce v objektu DataRow , ze kterého se čte nebo do kterého se zapisuje, implementuje IDynamicMetaObjectProvider a neimplementuje IXmlSerializable.

Pokud je zadáno vložené schéma, rozšiřuje toto vložené schéma stávající relační strukturu před načtením dat. Pokud se vyskytnou jakékoli konflikty (například stejný sloupec je ve stejné tabulce definován s použitím různých typů dat), je vyvolána výjimka.

Pokud není zadáno žádné vložené schéma, rozšiřuje se relační struktura v případě potřeby prostřednictvím odvození podle struktury dokumentu XML. Pokud schéma nelze rozšířit prostřednictvím odvození tak, aby byla vystavena všechna data, je vyvolána výjimka.

Poznámka

Nepřidružuje DataSet element XML s jeho odpovídající DataColumn nebo DataTable když právní XML znaky jako ("_") jsou řídicí v serializované XML. Sám DataSet o sobě pouze uchytá neplatné znaky XML v názvech elementů XML, a proto může používat pouze stejné. Pokud jsou povolené znaky v názvu elementu XML uvozeny řídicími znaky, je element při zpracování ignorován.

Viz také

Platí pro