DataTable.ReadXml Metoda

Definice

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

Přetížení

Name Description
ReadXml(Stream)

Načte schéma XML a data do DataTable zadaného Stream.

ReadXml(TextReader)

Načte schéma XML a data do DataTable zadaného TextReader.

ReadXml(String)

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

ReadXml(XmlReader)

Načte schéma XML a data do DataTable zadaného XmlReader.

Poznámky

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

Všimněte si, že totéž platí pro metody WriteXml a WriteXmlSchema metody. K zápisu dat XML nebo schématu i dat z této DataTablemetody použijte metodu WriteXml . K zápisu pouze schématu použijte metodu WriteXmlSchema .

Note

Bude InvalidOperationException vyvolána, pokud typ sloupce, který DataRow se čte z nebo zapisuje do implementace IDynamicMetaObjectProvider a neimplementuje IXmlSerializable.

ReadXml(Stream)

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

Načte schéma XML a data do DataTable zadaného Stream.

public:
 System::Data::XmlReadMode ReadXml(System::IO::Stream ^ stream);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Members from serialized types may use dynamic code generation.")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")]
public System.Data.XmlReadMode ReadXml(System.IO.Stream? stream);
public System.Data.XmlReadMode ReadXml(System.IO.Stream? stream);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")]
public System.Data.XmlReadMode ReadXml(System.IO.Stream? stream);
public System.Data.XmlReadMode ReadXml(System.IO.Stream stream);
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Members from serialized types may use dynamic code generation.")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")>]
member this.ReadXml : System.IO.Stream -> System.Data.XmlReadMode
member this.ReadXml : System.IO.Stream -> System.Data.XmlReadMode
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")>]
member this.ReadXml : System.IO.Stream -> System.Data.XmlReadMode
Public Function ReadXml (stream As Stream) As XmlReadMode

Parametry

stream
Stream

Objekt, který je odvozen od Stream.

Návraty

Používá XmlReadMode se ke čtení dat.

Atributy

Příklady

Následující příklad vytvoří 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 vyplní 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();
    }
}
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

Poznámky

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

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

Všimněte si, že totéž platí pro metody WriteXml a WriteXmlSchema metody. K zápisu dat XML nebo schématu i dat z této DataTablemetody použijte metodu WriteXml . K zápisu pouze schématu použijte metodu WriteXmlSchema .

Note

Bude InvalidOperationException vyvolána, pokud typ sloupce, který DataRow se čte z nebo zapisuje do implementace IDynamicMetaObjectProvider a neimplementuje IXmlSerializable.

Pokud je zadáno vložené schéma, použije se in-line schéma k rozšíření existující relační struktury před načtením dat. Pokud dojde ke konfliktům (například stejný sloupec ve stejné tabulce definované s různými datovými typy), vyvolá se výjimka.

Pokud není zadáno žádné vložené schéma, relační struktura se podle potřeby rozšíří prostřednictvím odvozování podle struktury dokumentu XML. Pokud schéma nelze rozšířit prostřednictvím odvozování, aby bylo možné zveřejnit všechna data, je vyvolána výjimka.

Note

Nepřidružuje DataSet xml element k odpovídajícímu DataColumn nebo DataTable když jsou právní znaky XML jako ("_") řídicí znak v serializovaném XML. Samotný DataSet samotný řídicí znak v názvech elementů XML pouze umistuje neplatné znaky XML, a proto může využívat pouze stejné. Pokud jsou v názvu elementu XML uniknuty právní znaky, je prvek při zpracování ignorován.

Viz také

Platí pro

ReadXml(TextReader)

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

Načte schéma XML a data do DataTable zadaného TextReader.

public:
 System::Data::XmlReadMode ReadXml(System::IO::TextReader ^ reader);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Members from serialized types may use dynamic code generation.")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")]
public System.Data.XmlReadMode ReadXml(System.IO.TextReader? reader);
public System.Data.XmlReadMode ReadXml(System.IO.TextReader? reader);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")]
public System.Data.XmlReadMode ReadXml(System.IO.TextReader? reader);
public System.Data.XmlReadMode ReadXml(System.IO.TextReader reader);
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Members from serialized types may use dynamic code generation.")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")>]
member this.ReadXml : System.IO.TextReader -> System.Data.XmlReadMode
member this.ReadXml : System.IO.TextReader -> System.Data.XmlReadMode
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")>]
member this.ReadXml : System.IO.TextReader -> System.Data.XmlReadMode
Public Function ReadXml (reader As TextReader) As XmlReadMode

Parametry

reader
TextReader

Ten TextReader se použije ke čtení dat.

Návraty

Používá XmlReadMode se ke čtení dat.

Atributy

Příklady

Následující příklad vytvoří 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 vyplní 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();
    }
}
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

Poznámky

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

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

Všimněte si, že totéž platí pro metody WriteXml a WriteXmlSchema metody. K zápisu dat XML nebo schématu i dat z této DataTablemetody použijte metodu WriteXml . K zápisu pouze schématu použijte metodu WriteXmlSchema .

Note

Bude InvalidOperationException vyvolána, pokud typ sloupce, který DataRow se čte z nebo zapisuje do implementace IDynamicMetaObjectProvider a neimplementuje IXmlSerializable.

Pokud je zadáno vložené schéma, použije se in-line schéma k rozšíření existující relační struktury před načtením dat. Pokud dojde ke konfliktům (například stejný sloupec ve stejné tabulce definované s různými datovými typy), vyvolá se výjimka.

Pokud není zadáno žádné vložené schéma, relační struktura se podle potřeby rozšíří prostřednictvím odvozování podle struktury dokumentu XML. Pokud schéma nelze rozšířit prostřednictvím odvozování, aby bylo možné zveřejnit všechna data, je vyvolána výjimka.

Note

Nepřidružuje DataSet xml element k odpovídajícímu DataColumn nebo DataTable když jsou právní znaky XML jako ("_") řídicí znak v serializovaném XML. Samotný DataSet samotný řídicí znak v názvech elementů XML pouze umistuje neplatné znaky XML, a proto může využívat pouze stejné. Pokud jsou v názvu elementu XML uniknuty právní znaky, je prvek při zpracování ignorován.

Viz také

Platí pro

ReadXml(String)

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

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

public:
 System::Data::XmlReadMode ReadXml(System::String ^ fileName);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Members from serialized types may use dynamic code generation.")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")]
public System.Data.XmlReadMode ReadXml(string fileName);
public System.Data.XmlReadMode ReadXml(string fileName);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")]
public System.Data.XmlReadMode ReadXml(string fileName);
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Members from serialized types may use dynamic code generation.")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")>]
member this.ReadXml : string -> System.Data.XmlReadMode
member this.ReadXml : string -> System.Data.XmlReadMode
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")>]
member this.ReadXml : string -> System.Data.XmlReadMode
Public Function ReadXml (fileName As String) As XmlReadMode

Parametry

fileName
String

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

Návraty

Používá XmlReadMode se ke čtení dat.

Atributy

Příklady

Následující příklad vytvoří 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 vyplní 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();
    }
}
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

Poznámky

DataTable Aktuální a jeho sestupné hodnoty jsou načteny s daty ze souboru pojmenovaného v zadaném Stringsouboru . Chování této metody je stejné jako DataSet.ReadXml chování metody, s tím rozdílem, že v tomto případě jsou data načtena pouze pro aktuální tabulku a jejich potomky.

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

Všimněte si, že totéž platí pro metody WriteXml a WriteXmlSchema metody. K zápisu dat XML nebo schématu i dat z této DataTablemetody použijte metodu WriteXml . K zápisu pouze schématu použijte metodu WriteXmlSchema .

Note

Bude InvalidOperationException vyvolána, pokud typ sloupce, který DataRow se čte z nebo zapisuje do implementace IDynamicMetaObjectProvider a neimplementuje IXmlSerializable.

Pokud je zadáno vložené schéma, použije se in-line schéma k rozšíření existující relační struktury před načtením dat. Pokud dojde ke konfliktům (například stejný sloupec ve stejné tabulce definované s různými datovými typy), vyvolá se výjimka.

Pokud není zadáno žádné vložené schéma, relační struktura se podle potřeby rozšíří prostřednictvím odvozování podle struktury dokumentu XML. Pokud schéma nelze rozšířit prostřednictvím odvozování, aby bylo možné zveřejnit všechna data, je vyvolána výjimka.

Note

Nepřidružuje DataSet xml element k odpovídajícímu DataColumn nebo DataTable když jsou právní znaky XML jako ("_") řídicí znak v serializovaném XML. Samotný DataSet samotný řídicí znak v názvech elementů XML pouze umistuje neplatné znaky XML, a proto může využívat pouze stejné. Pokud jsou v názvu elementu XML uniknuty právní znaky, je prvek 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
Zdroj:
DataTable.cs
Zdroj:
DataTable.cs

Načte schéma XML a data do DataTable zadaného XmlReader.

public:
 System::Data::XmlReadMode ReadXml(System::Xml::XmlReader ^ reader);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Members from serialized types may use dynamic code generation.")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")]
public System.Data.XmlReadMode ReadXml(System.Xml.XmlReader? reader);
public System.Data.XmlReadMode ReadXml(System.Xml.XmlReader? reader);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")]
public System.Data.XmlReadMode ReadXml(System.Xml.XmlReader? reader);
public System.Data.XmlReadMode ReadXml(System.Xml.XmlReader reader);
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Members from serialized types may use dynamic code generation.")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")>]
member this.ReadXml : System.Xml.XmlReader -> System.Data.XmlReadMode
member this.ReadXml : System.Xml.XmlReader -> System.Data.XmlReadMode
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")>]
member this.ReadXml : System.Xml.XmlReader -> System.Data.XmlReadMode
Public Function ReadXml (reader As XmlReader) As XmlReadMode

Parametry

reader
XmlReader

Ten XmlReader se použije ke čtení dat.

Návraty

Používá XmlReadMode se ke čtení dat.

Atributy

Příklady

Následující příklad vytvoří 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 z XmlReader 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();
    }
}
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

Poznámky

DataTable Aktuální a jeho sestupné hodnoty jsou načteny s daty ze souboru pojmenovaného v zadaném XmlReadersouboru . Chování této metody je stejné jako ReadXml chování metody, s tím rozdílem, že v tomto případě jsou data načtena pouze pro aktuální tabulku a jejich potomky.

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

Všimněte si, že totéž platí pro metody WriteXml a WriteXmlSchema metody. K zápisu dat XML nebo schématu i dat z této DataTablemetody použijte metodu WriteXml . K zápisu pouze schématu použijte metodu WriteXmlSchema .

Note

Bude InvalidOperationException vyvolána, pokud typ sloupce, který DataRow se čte z nebo zapisuje do implementace IDynamicMetaObjectProvider a neimplementuje IXmlSerializable.

Pokud je zadáno vložené schéma, použije se in-line schéma k rozšíření existující relační struktury před načtením dat. Pokud dojde ke konfliktům (například stejný sloupec ve stejné tabulce definované s různými datovými typy), vyvolá se výjimka.

Pokud není zadáno žádné vložené schéma, relační struktura se podle potřeby rozšíří prostřednictvím odvozování podle struktury dokumentu XML. Pokud schéma nelze rozšířit prostřednictvím odvozování, aby bylo možné zveřejnit všechna data, je vyvolána výjimka.

Note

Nepřidružuje DataSet xml element k odpovídajícímu DataColumn nebo DataTable když jsou právní znaky XML jako ("_") řídicí znak v serializovaném XML. Samotný DataSet samotný řídicí znak v názvech elementů XML pouze umistuje neplatné znaky XML, a proto může využívat pouze stejné. Pokud jsou v názvu elementu XML uniknuty právní znaky, je prvek při zpracování ignorován.

Viz také

Platí pro