DataTable.ReadXml Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Läser XML-schema och data i DataTable.
Överlagringar
| Name | Description |
|---|---|
| ReadXml(Stream) |
Läser XML-schema och data till DataTable med den angivna Stream. |
| ReadXml(TextReader) |
Läser XML-schema och data till DataTable med den angivna TextReader. |
| ReadXml(String) |
Läser XML-schema och data till DataTable från den angivna filen. |
| ReadXml(XmlReader) |
Läser XML-schema och data till DataTable med den angivna XmlReader. |
Kommentarer
Metoden ReadXml ger ett sätt att endast läsa data eller både data och schema i ett från ett DataTable XML-dokument, medan ReadXmlSchema metoden endast läser schemat. Om du vill läsa både data och schema använder du en av de ReadXML överlagringar som innehåller parametern XmlReadMode och anger dess värde till ReadSchema.
Observera att samma sak gäller för WriteXml metoderna och WriteXmlSchema . Om du vill skriva XML-data, eller både schema och data från DataTable, använder du WriteXml metoden . Om du bara vill skriva schemat använder du WriteXmlSchema -metoden.
Note
En InvalidOperationException genereras om en kolumntyp i som DataRow läses från eller skrivs till implementeras och inte implementerar IXmlSerializableIDynamicMetaObjectProvider .
ReadXml(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
Parametrar
Returer
Används XmlReadMode för att läsa data.
Exempel
I följande exempel skapas en DataTable som innehåller två kolumner och tio rader. I exemplet skrivs DataTable schemat och data till en minnesström genom att metoden anropas WriteXml . Exemplet skapar en sekund DataTable och anropar ReadXml metoden för att fylla den med schema och data.
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
Kommentarer
DataTable Strömmen och dess underordnade inläsningar läses in med data från den angivna Stream. Beteendet för den här metoden är identiskt DataSet.ReadXml med metodens, förutom att data i det här fallet endast läses in för den aktuella tabellen och dess underordnade.
Metoden ReadXml ger ett sätt att endast läsa data eller både data och schema i ett från ett DataTable XML-dokument, medan ReadXmlSchema metoden endast läser schemat.
Observera att samma sak gäller för WriteXml metoderna och WriteXmlSchema . Om du vill skriva XML-data, eller både schema och data från DataTable, använder du WriteXml metoden . Om du bara vill skriva schemat använder du WriteXmlSchema -metoden.
Note
En InvalidOperationException genereras om en kolumntyp i som DataRow läses från eller skrivs till implementeras och inte implementerar IXmlSerializableIDynamicMetaObjectProvider .
Om ett in-line-schema anges används det infogade schemat för att utöka den befintliga relationsstrukturen innan data läses in. Om det finns konflikter (till exempel samma kolumn i samma tabell som definierats med olika datatyper) utlöses ett undantag.
Om inget infogat schema har angetts utökas relationsstrukturen genom slutsatsdragning efter behov enligt XML-dokumentets struktur. Om schemat inte kan utökas genom slutsatsdragning för att exponera alla data utlöses ett undantag.
Note
DataSet Associerar inte ett XML-element med motsvarande DataColumn eller DataTable när juridiska XML-tecken som ("_") är undantagna i den serialiserade XML-koden. Sig DataSet själv undflyr endast ogiltiga XML-tecken i XML-elementnamn och kan därför bara använda samma. När juridiska tecken i XML-elementnamnet utelämnas ignoreras elementet under bearbetningen.
Se även
Gäller för
ReadXml(TextReader)
Läser XML-schema och data till DataTable med den angivna 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
Parametrar
- reader
- TextReader
Det TextReader som ska användas för att läsa data.
Returer
Används XmlReadMode för att läsa data.
Exempel
I följande exempel skapas en DataTable som innehåller två kolumner och tio rader. I exemplet skrivs DataTable schemat och data till en minnesström genom att metoden anropas WriteXml . Exemplet skapar en sekund DataTable och anropar ReadXml metoden för att fylla den med schema och data.
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
Kommentarer
DataTable Strömmen och dess underordnade inläsningar läses in med data från den angivna TextReader. Beteendet för den här metoden är identiskt DataSet.ReadXml med metodens, förutom att data i det här fallet endast läses in för den aktuella tabellen och dess underordnade.
Metoden ReadXml ger ett sätt att endast läsa data eller både data och schema i ett från ett DataTable XML-dokument, medan ReadXmlSchema metoden endast läser schemat.
Observera att samma sak gäller för WriteXml metoderna och WriteXmlSchema . Om du vill skriva XML-data, eller både schema och data från DataTable, använder du WriteXml metoden . Om du bara vill skriva schemat använder du WriteXmlSchema -metoden.
Note
En InvalidOperationException genereras om en kolumntyp i som DataRow läses från eller skrivs till implementeras och inte implementerar IXmlSerializableIDynamicMetaObjectProvider .
Om ett in-line-schema anges används det infogade schemat för att utöka den befintliga relationsstrukturen innan data läses in. Om det finns konflikter (till exempel samma kolumn i samma tabell som definierats med olika datatyper) utlöses ett undantag.
Om inget infogat schema har angetts utökas relationsstrukturen genom slutsatsdragning efter behov enligt XML-dokumentets struktur. Om schemat inte kan utökas genom slutsatsdragning för att exponera alla data utlöses ett undantag.
Note
DataSet Associerar inte ett XML-element med motsvarande DataColumn eller DataTable när juridiska XML-tecken som ("_") är undantagna i den serialiserade XML-koden. Sig DataSet själv undflyr endast ogiltiga XML-tecken i XML-elementnamn och kan därför bara använda samma. När juridiska tecken i XML-elementnamnet utelämnas ignoreras elementet under bearbetningen.
Se även
Gäller för
ReadXml(String)
Läser XML-schema och data till DataTable från den angivna filen.
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
Parametrar
- fileName
- String
Namnet på filen som data ska läsas från.
Returer
Används XmlReadMode för att läsa data.
Exempel
I följande exempel skapas en DataTable som innehåller två kolumner och tio rader. I exemplet skrivs DataTable schemat och data till disken. Exemplet skapar en sekund DataTable och anropar ReadXml metoden för att fylla den med schema och data.
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
Kommentarer
Den aktuella DataTable och dess underordnade filer läses in med data från filen med namnet i den angivna String. Beteendet för den här metoden är identiskt DataSet.ReadXml med metodens, förutom att data i det här fallet endast läses in för den aktuella tabellen och dess underordnade.
Metoden ReadXml ger ett sätt att endast läsa data eller både data och schema i ett från ett DataTable XML-dokument, medan ReadXmlSchema metoden endast läser schemat.
Observera att samma sak gäller för WriteXml metoderna och WriteXmlSchema . Om du vill skriva XML-data, eller både schema och data från DataTable, använder du WriteXml metoden . Om du bara vill skriva schemat använder du WriteXmlSchema -metoden.
Note
En InvalidOperationException genereras om en kolumntyp i som DataRow läses från eller skrivs till implementeras och inte implementerar IXmlSerializableIDynamicMetaObjectProvider .
Om ett in-line-schema anges används det infogade schemat för att utöka den befintliga relationsstrukturen innan data läses in. Om det finns konflikter (till exempel samma kolumn i samma tabell som definierats med olika datatyper) utlöses ett undantag.
Om inget infogat schema har angetts utökas relationsstrukturen genom slutsatsdragning efter behov enligt XML-dokumentets struktur. Om schemat inte kan utökas genom slutsatsdragning för att exponera alla data utlöses ett undantag.
Note
DataSet Associerar inte ett XML-element med motsvarande DataColumn eller DataTable när juridiska XML-tecken som ("_") är undantagna i den serialiserade XML-koden. Sig DataSet själv undflyr endast ogiltiga XML-tecken i XML-elementnamn och kan därför bara använda samma. När juridiska tecken i XML-elementnamnet utelämnas ignoreras elementet under bearbetningen.
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");
}
}
Se även
Gäller för
ReadXml(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
Parametrar
Returer
Används XmlReadMode för att läsa data.
Exempel
I följande exempel skapas en DataTable som innehåller två kolumner och tio rader. I exemplet skrivs DataTable schemat och data till en XmlReader. Exemplet skapar en sekund DataTable och anropar ReadXml metoden för att fylla den med schema och data från instansen XmlReader .
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
Kommentarer
Den aktuella DataTable och dess underordnade filer läses in med data från filen med namnet i den angivna XmlReader. Beteendet för den här metoden är identiskt ReadXml med metodens, förutom att data i det här fallet endast läses in för den aktuella tabellen och dess underordnade.
Metoden ReadXml ger ett sätt att endast läsa data eller både data och schema i ett från ett DataTable XML-dokument, medan ReadXmlSchema metoden endast läser schemat.
Observera att samma sak gäller för WriteXml metoderna och WriteXmlSchema . Om du vill skriva XML-data, eller både schema och data från DataTable, använder du WriteXml metoden . Om du bara vill skriva schemat använder du WriteXmlSchema -metoden.
Note
En InvalidOperationException genereras om en kolumntyp i som DataRow läses från eller skrivs till implementeras och inte implementerar IXmlSerializableIDynamicMetaObjectProvider .
Om ett in-line-schema anges används det infogade schemat för att utöka den befintliga relationsstrukturen innan data läses in. Om det finns konflikter (till exempel samma kolumn i samma tabell som definierats med olika datatyper) utlöses ett undantag.
Om inget infogat schema har angetts utökas relationsstrukturen genom slutsatsdragning efter behov enligt XML-dokumentets struktur. Om schemat inte kan utökas genom slutsatsdragning för att exponera alla data utlöses ett undantag.
Note
DataSet Associerar inte ett XML-element med motsvarande DataColumn eller DataTable när juridiska XML-tecken som ("_") är undantagna i den serialiserade XML-koden. Sig DataSet själv undflyr endast ogiltiga XML-tecken i XML-elementnamn och kan därför bara använda samma. När juridiska tecken i XML-elementnamnet utelämnas ignoreras elementet under bearbetningen.