DataTable.ReadXml Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Lee el esquema XML y los datos en .DataTable
Sobrecargas
| Nombre | Description |
|---|---|
| ReadXml(Stream) |
Lee el esquema XML y los datos en mediante DataTable el especificado Stream. |
| ReadXml(TextReader) |
Lee el esquema XML y los datos en mediante DataTable el especificado TextReader. |
| ReadXml(String) |
Lee el esquema XML y los datos en el DataTable desde el archivo especificado. |
| ReadXml(XmlReader) |
Lee el esquema XML y los datos en mediante DataTable el especificado XmlReader. |
Comentarios
El ReadXml método proporciona una manera de leer solo los datos, o tanto los datos como el esquema en un desde un DataTable documento XML, mientras que el ReadXmlSchema método solo lee el esquema. Para leer los datos y el esquema, use una de las ReadXML sobrecargas que incluyen el XmlReadMode parámetro y establezca su valor ReadSchemaen .
Tenga en cuenta que lo mismo sucede con los WriteXml métodos y WriteXmlSchema , respectivamente. Para escribir datos XML, o tanto de esquema como de datos de DataTable, use el WriteXml método . Para escribir solo el esquema, use el WriteXmlSchema método .
Note
Se InvalidOperationException producirá una excepción si un tipo de columna en el DataRow que se lee o se escribe para implementar IDynamicMetaObjectProvider y no implementa IXmlSerializable.
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
Parámetros
Devoluciones
que XmlReadMode se usa para leer los datos.
Ejemplos
En el ejemplo siguiente se crea un DataTable objeto que contiene dos columnas y diez filas. En el ejemplo se escribe el esquema y los DataTable datos en un flujo de memoria invocando el WriteXml método . En el ejemplo se crea un segundo DataTable y se llama al ReadXml método para rellenarlo con el esquema y los datos.
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
Comentarios
El actual DataTable y sus descendientes se cargan con los datos del proporcionado Stream. El comportamiento de este método es idéntico al del DataSet.ReadXml método , salvo que, en este caso, los datos solo se cargan para la tabla actual y sus descendientes.
El ReadXml método proporciona una manera de leer solo los datos, o tanto los datos como el esquema en un desde un DataTable documento XML, mientras que el ReadXmlSchema método solo lee el esquema.
Tenga en cuenta que lo mismo sucede con los WriteXml métodos y WriteXmlSchema , respectivamente. Para escribir datos XML, o tanto de esquema como de datos de DataTable, use el WriteXml método . Para escribir solo el esquema, use el WriteXmlSchema método .
Note
Se InvalidOperationException producirá una excepción si un tipo de columna en el DataRow que se lee o se escribe para implementar IDynamicMetaObjectProvider y no implementa IXmlSerializable.
Si se especifica un esquema en línea, el esquema en línea se usa para extender la estructura relacional existente antes de cargar los datos. Si hay conflictos (por ejemplo, la misma columna de la misma tabla definida con tipos de datos diferentes), se genera una excepción.
Si no se especifica ningún esquema en línea, la estructura relacional se extiende a través de la inferencia, según sea necesario, según la estructura del documento XML. Si el esquema no se puede extender a través de la inferencia para exponer todos los datos, se genera una excepción.
Note
DataSet No asocia un elemento XML a su correspondiente DataColumn o DataTable cuando se escapen caracteres XML legales como ("_") en el XML serializado. El DataSet propio solo escapa a caracteres XML no válidos en nombres de elementos XML y, por tanto, solo puede consumir lo mismo. Cuando se escapan los caracteres legales en el nombre del elemento XML, se omite el elemento mientras se procesa.
Consulte también
Se aplica a
ReadXml(TextReader)
Lee el esquema XML y los datos en mediante DataTable el especificado 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
Parámetros
- reader
- TextReader
TextReader que se usará para leer los datos.
Devoluciones
que XmlReadMode se usa para leer los datos.
Ejemplos
En el ejemplo siguiente se crea un DataTable objeto que contiene dos columnas y diez filas. En el ejemplo se escribe el esquema y los DataTable datos en un flujo de memoria invocando el WriteXml método . En el ejemplo se crea un segundo DataTable y se llama al ReadXml método para rellenarlo con el esquema y los datos.
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
Comentarios
El actual DataTable y sus descendientes se cargan con los datos del proporcionado TextReader. El comportamiento de este método es idéntico al del DataSet.ReadXml método , salvo que, en este caso, los datos solo se cargan para la tabla actual y sus descendientes.
El ReadXml método proporciona una manera de leer solo los datos, o tanto los datos como el esquema en un desde un DataTable documento XML, mientras que el ReadXmlSchema método solo lee el esquema.
Tenga en cuenta que lo mismo sucede con los WriteXml métodos y WriteXmlSchema , respectivamente. Para escribir datos XML, o tanto de esquema como de datos de DataTable, use el WriteXml método . Para escribir solo el esquema, use el WriteXmlSchema método .
Note
Se InvalidOperationException producirá una excepción si un tipo de columna en el DataRow que se lee o se escribe para implementar IDynamicMetaObjectProvider y no implementa IXmlSerializable.
Si se especifica un esquema en línea, el esquema en línea se usa para extender la estructura relacional existente antes de cargar los datos. Si hay conflictos (por ejemplo, la misma columna de la misma tabla definida con tipos de datos diferentes), se genera una excepción.
Si no se especifica ningún esquema en línea, la estructura relacional se extiende a través de la inferencia, según sea necesario, según la estructura del documento XML. Si el esquema no se puede extender a través de la inferencia para exponer todos los datos, se genera una excepción.
Note
DataSet No asocia un elemento XML a su correspondiente DataColumn o DataTable cuando se escapen caracteres XML legales como ("_") en el XML serializado. El DataSet propio solo escapa a caracteres XML no válidos en nombres de elementos XML y, por tanto, solo puede consumir lo mismo. Cuando se escapan los caracteres legales en el nombre del elemento XML, se omite el elemento mientras se procesa.
Consulte también
Se aplica a
ReadXml(String)
Lee el esquema XML y los datos en el DataTable desde el archivo especificado.
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
Parámetros
- fileName
- String
Nombre del archivo desde el que se van a leer los datos.
Devoluciones
que XmlReadMode se usa para leer los datos.
Ejemplos
En el ejemplo siguiente se crea un DataTable objeto que contiene dos columnas y diez filas. En el ejemplo se escribe el esquema y los DataTable datos en el disco. En el ejemplo se crea un segundo DataTable y se llama al ReadXml método para rellenarlo con el esquema y los datos.
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
Comentarios
El actual DataTable y sus descendientes se cargan con los datos del archivo denominado en el proporcionado String. El comportamiento de este método es idéntico al del DataSet.ReadXml método , salvo que, en este caso, los datos solo se cargan para la tabla actual y sus descendientes.
El ReadXml método proporciona una manera de leer solo los datos, o tanto los datos como el esquema en un desde un DataTable documento XML, mientras que el ReadXmlSchema método solo lee el esquema.
Tenga en cuenta que lo mismo sucede con los WriteXml métodos y WriteXmlSchema , respectivamente. Para escribir datos XML, o tanto de esquema como de datos de DataTable, use el WriteXml método . Para escribir solo el esquema, use el WriteXmlSchema método .
Note
Se InvalidOperationException producirá una excepción si un tipo de columna en el DataRow que se lee o se escribe para implementar IDynamicMetaObjectProvider y no implementa IXmlSerializable.
Si se especifica un esquema en línea, el esquema en línea se usa para extender la estructura relacional existente antes de cargar los datos. Si hay conflictos (por ejemplo, la misma columna de la misma tabla definida con tipos de datos diferentes), se genera una excepción.
Si no se especifica ningún esquema en línea, la estructura relacional se extiende a través de la inferencia, según sea necesario, según la estructura del documento XML. Si el esquema no se puede extender a través de la inferencia para exponer todos los datos, se genera una excepción.
Note
DataSet No asocia un elemento XML a su correspondiente DataColumn o DataTable cuando se escapen caracteres XML legales como ("_") en el XML serializado. El DataSet propio solo escapa a caracteres XML no válidos en nombres de elementos XML y, por tanto, solo puede consumir lo mismo. Cuando se escapan los caracteres legales en el nombre del elemento XML, se omite el elemento mientras se procesa.
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");
}
}
Consulte también
Se aplica a
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
Parámetros
Devoluciones
que XmlReadMode se usa para leer los datos.
Ejemplos
En el ejemplo siguiente se crea un DataTable objeto que contiene dos columnas y diez filas. En el ejemplo se escribe el esquema y los DataTable datos en .XmlReader En el ejemplo se crea un segundo DataTable y se llama al ReadXml método para rellenarlo con el esquema y los datos de la XmlReader instancia.
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
Comentarios
El actual DataTable y sus descendientes se cargan con los datos del archivo denominado en el proporcionado XmlReader. El comportamiento de este método es idéntico al del ReadXml método , salvo que, en este caso, los datos solo se cargan para la tabla actual y sus descendientes.
El ReadXml método proporciona una manera de leer solo los datos, o tanto los datos como el esquema en un desde un DataTable documento XML, mientras que el ReadXmlSchema método solo lee el esquema.
Tenga en cuenta que lo mismo sucede con los WriteXml métodos y WriteXmlSchema , respectivamente. Para escribir datos XML, o tanto de esquema como de datos de DataTable, use el WriteXml método . Para escribir solo el esquema, use el WriteXmlSchema método .
Note
Se InvalidOperationException producirá una excepción si un tipo de columna en el DataRow que se lee o se escribe para implementar IDynamicMetaObjectProvider y no implementa IXmlSerializable.
Si se especifica un esquema en línea, el esquema en línea se usa para extender la estructura relacional existente antes de cargar los datos. Si hay conflictos (por ejemplo, la misma columna de la misma tabla definida con tipos de datos diferentes), se genera una excepción.
Si no se especifica ningún esquema en línea, la estructura relacional se extiende a través de la inferencia, según sea necesario, según la estructura del documento XML. Si el esquema no se puede extender a través de la inferencia para exponer todos los datos, se genera una excepción.
Note
DataSet No asocia un elemento XML a su correspondiente DataColumn o DataTable cuando se escapen caracteres XML legales como ("_") en el XML serializado. El DataSet propio solo escapa a caracteres XML no válidos en nombres de elementos XML y, por tanto, solo puede consumir lo mismo. Cuando se escapan los caracteres legales en el nombre del elemento XML, se omite el elemento mientras se procesa.