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 esquema y datos XML en el objeto DataTable.
Sobrecargas
ReadXml(Stream) |
Lee los datos y el esquema XML en el objeto DataTable mediante el objeto Stream especificado. |
ReadXml(TextReader) |
Lee los datos y el esquema XML en el objeto DataTable mediante el objeto TextReader especificado. |
ReadXml(String) |
Lee los datos y el esquema XML en el objeto DataTable desde el archivo especificado. |
ReadXml(XmlReader) |
Lee datos y el esquema XML en el objeto DataTable mediante el objeto XmlReader especificado. |
Comentarios
El ReadXml método proporciona una manera de leer solo los datos, o bien los datos y el esquema en un DataTable desde un 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 en ReadSchema
.
Tenga en cuenta que lo mismo es true para los WriteXml métodos y WriteXmlSchema , respectivamente. Para escribir datos XML, o tanto el esquema como los datos de DataTable
, use el WriteXml
método . Para escribir solo el esquema, use el WriteXmlSchema
método .
Nota
InvalidOperationException Se producirá una excepción si un tipo de columna en el DataRow
que se lee o se escribe en implementa IDynamicMetaObjectProvider y no implementa IXmlSerializable.
ReadXml(Stream)
- Source:
- DataTable.cs
- Source:
- DataTable.cs
- Source:
- DataTable.cs
public:
System::Data::XmlReadMode ReadXml(System::IO::Stream ^ 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
XmlReadMode utilizado para leer los datos.
Ejemplos
En el ejemplo siguiente se crea un objeto DataTable que contiene dos columnas y diez filas. En el ejemplo se escribe el esquema y los DataTable datos en un flujo de memoria mediante la invocación del 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 de la clase proporcionada Stream. El comportamiento de este método es idéntico al del DataSet.ReadXml método, excepto 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 bien los datos y el esquema en un DataTable desde un documento XML, mientras que el ReadXmlSchema método solo lee el esquema.
Tenga en cuenta que lo mismo es true para los WriteXml métodos y WriteXmlSchema , respectivamente. Para escribir datos XML, o tanto el esquema como los datos de DataTable
, use el WriteXml
método . Para escribir solo el esquema, use el WriteXmlSchema
método .
Nota
InvalidOperationException Se producirá una excepción si un tipo de columna en el DataRow
que se lee o se escribe en implementa IDynamicMetaObjectProvider y no implementa IXmlSerializable.
Si se especifica un esquema en línea, el esquema en línea se usa para ampliar la estructura relacional existente antes de cargar los datos. Si hay conflictos (por ejemplo, la misma columna de la misma tabla definida con distintos tipos de datos), 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.
Nota
No DataSet
asocia un elemento XML con su correspondiente DataColumn
o DataTable
cuando los caracteres XML legales como ("_") se escapan en el XML serializado. El DataSet
propio solo escapa a caracteres XML no válidos en los nombres de elementos XML y, por tanto, solo puede consumir lo mismo. Cuando los caracteres legales en el nombre del elemento XML son de escape, el elemento se omite mientras se procesa.
Consulte también
Se aplica a
ReadXml(TextReader)
- Source:
- DataTable.cs
- Source:
- DataTable.cs
- Source:
- DataTable.cs
Lee los datos y el esquema XML en el objeto DataTable mediante el objeto TextReader especificado.
public:
System::Data::XmlReadMode ReadXml(System::IO::TextReader ^ reader);
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
Objeto TextReader que se va a usar para leer los datos.
Devoluciones
XmlReadMode utilizado para leer los datos.
Ejemplos
En el ejemplo siguiente se crea un objeto DataTable que contiene dos columnas y diez filas. En el ejemplo se escribe el esquema y los DataTable datos en un flujo de memoria mediante la invocación del 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 de la clase proporcionada TextReader. El comportamiento de este método es idéntico al del DataSet.ReadXml método, excepto 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 bien los datos y el esquema en un DataTable desde un documento XML, mientras que el ReadXmlSchema método solo lee el esquema.
Tenga en cuenta que lo mismo es true para los WriteXml métodos y WriteXmlSchema , respectivamente. Para escribir datos XML, o tanto el esquema como los datos de DataTable
, use el WriteXml
método . Para escribir solo el esquema, use el WriteXmlSchema
método .
Nota
InvalidOperationException Se producirá una excepción si un tipo de columna en el DataRow
que se lee o se escribe en implementa IDynamicMetaObjectProvider y no implementa IXmlSerializable.
Si se especifica un esquema en línea, el esquema en línea se usa para ampliar la estructura relacional existente antes de cargar los datos. Si hay conflictos (por ejemplo, la misma columna de la misma tabla definida con distintos tipos de datos), 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.
Nota
No DataSet
asocia un elemento XML con su correspondiente DataColumn
o DataTable
cuando los caracteres XML legales como ("_") se escapan en el XML serializado. El DataSet
propio solo escapa a caracteres XML no válidos en los nombres de elementos XML y, por tanto, solo puede consumir lo mismo. Cuando los caracteres legales en el nombre del elemento XML son de escape, el elemento se omite mientras se procesa.
Consulte también
Se aplica a
ReadXml(String)
- Source:
- DataTable.cs
- Source:
- DataTable.cs
- Source:
- DataTable.cs
Lee los datos y el esquema XML en el objeto 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 del que se van a leer los datos.
Devoluciones
XmlReadMode utilizado para leer los datos.
Ejemplos
En el ejemplo siguiente se crea un objeto DataTable 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, excepto 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 bien los datos y el esquema en un DataTable desde un documento XML, mientras que el ReadXmlSchema método solo lee el esquema.
Tenga en cuenta que lo mismo es true para los WriteXml métodos y WriteXmlSchema , respectivamente. Para escribir datos XML, o tanto el esquema como los datos de DataTable
, use el WriteXml
método . Para escribir solo el esquema, use el WriteXmlSchema
método .
Nota
InvalidOperationException Se producirá una excepción si un tipo de columna en el DataRow
que se lee o se escribe en implementa IDynamicMetaObjectProvider y no implementa IXmlSerializable.
Si se especifica un esquema en línea, el esquema en línea se usa para ampliar la estructura relacional existente antes de cargar los datos. Si hay conflictos (por ejemplo, la misma columna de la misma tabla definida con distintos tipos de datos), 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.
Nota
No DataSet
asocia un elemento XML con su correspondiente DataColumn
o DataTable
cuando los caracteres XML legales como ("_") se escapan en el XML serializado. El DataSet
propio solo escapa a caracteres XML no válidos en los nombres de elementos XML y, por tanto, solo puede consumir lo mismo. Cuando los caracteres legales en el nombre del elemento XML son de escape, el elemento se omite 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)
- Source:
- DataTable.cs
- Source:
- DataTable.cs
- Source:
- DataTable.cs
public:
System::Data::XmlReadMode ReadXml(System::Xml::XmlReader ^ reader);
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
XmlReadMode utilizado para leer los datos.
Ejemplos
En el ejemplo siguiente se crea un objeto DataTable 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, excepto 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 bien los datos y el esquema en un DataTable desde un documento XML, mientras que el ReadXmlSchema método solo lee el esquema.
Tenga en cuenta que lo mismo es true para los WriteXml métodos y WriteXmlSchema , respectivamente. Para escribir datos XML, o tanto el esquema como los datos de DataTable
, use el WriteXml
método . Para escribir solo el esquema, use el WriteXmlSchema
método .
Nota
InvalidOperationException Se producirá una excepción si un tipo de columna en el DataRow
que se lee o se escribe en implementa IDynamicMetaObjectProvider y no implementa IXmlSerializable.
Si se especifica un esquema en línea, el esquema en línea se usa para ampliar la estructura relacional existente antes de cargar los datos. Si hay conflictos (por ejemplo, la misma columna de la misma tabla definida con distintos tipos de datos), 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.
Nota
No DataSet
asocia un elemento XML con su correspondiente DataColumn
o DataTable
cuando los caracteres XML legales como ("_") se escapan en el XML serializado. El DataSet
propio solo escapa a caracteres XML no válidos en los nombres de elementos XML y, por tanto, solo puede consumir lo mismo. Cuando los caracteres legales en el nombre del elemento XML son de escape, el elemento se omite mientras se procesa.