DataTable.ReadXml Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Načte schéma XML a data do objektu DataTable.
Přetížení
| Name | Description |
|---|---|
| ReadXml(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) |
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
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
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
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
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.