DataTable.ReadXml Méthode

Définition

Lit le schéma XML et les données dans le DataTable.

Surcharges

Nom Description
ReadXml(Stream)

Lit le schéma XML et les données dans l’utilisation DataTable de l’élément spécifié Stream.

ReadXml(TextReader)

Lit le schéma XML et les données dans l’utilisation DataTable de l’élément spécifié TextReader.

ReadXml(String)

Lit le schéma XML et les données dans le DataTable fichier spécifié.

ReadXml(XmlReader)

Lit le schéma XML et les données dans l’utilisation DataTable de l’élément spécifié XmlReader.

Remarques

La ReadXml méthode permet de lire uniquement les données ou les données et le schéma dans un DataTable document XML, tandis que la ReadXmlSchema méthode lit uniquement le schéma. Pour lire les données et le schéma, utilisez l’une ReadXML des surcharges qui incluent le XmlReadMode paramètre et définissez sa valeur ReadSchemasur .

Notez que la même chose est vraie pour les méthodes et WriteXmlSchema les WriteXml méthodes, respectivement. Pour écrire des données XML, ou des schémas et des données à partir du DataTable, utilisez la WriteXml méthode. Pour écrire uniquement le schéma, utilisez la WriteXmlSchema méthode.

Note

Une InvalidOperationException exception est levée si un type de colonne dans l’objet DataRow lu ou écrit pour implémenter IDynamicMetaObjectProvider et n’implémente IXmlSerializablepas .

ReadXml(Stream)

Lit le schéma XML et les données dans l’utilisation DataTable de l’élément spécifié 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

Paramètres

stream
Stream

Objet qui dérive de Stream.

Retours

XmlReadMode Utilisé pour lire les données.

Exemples

L’exemple suivant crée une DataTable colonne contenant deux colonnes et dix lignes. L’exemple écrit le schéma et les DataTable données dans un flux de mémoire en appelant la WriteXml méthode. L’exemple crée une seconde DataTable et appelle la méthode pour la ReadXml remplir avec le schéma et les données.

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

Remarques

Le courant DataTable et ses descendants sont chargés avec les données de l’élément fourni Stream. Le comportement de cette méthode est identique à celui de la DataSet.ReadXml méthode, sauf que dans ce cas, les données sont chargées uniquement pour la table actuelle et ses descendants.

La ReadXml méthode permet de lire uniquement les données ou les données et le schéma dans un DataTable document XML, tandis que la ReadXmlSchema méthode lit uniquement le schéma.

Notez que la même chose est vraie pour les méthodes et WriteXmlSchema les WriteXml méthodes, respectivement. Pour écrire des données XML, ou des schémas et des données à partir du DataTable, utilisez la WriteXml méthode. Pour écrire uniquement le schéma, utilisez la WriteXmlSchema méthode.

Note

Une InvalidOperationException exception est levée si un type de colonne dans l’objet DataRow lu ou écrit pour implémenter IDynamicMetaObjectProvider et n’implémente IXmlSerializablepas .

Si un schéma en ligne est spécifié, le schéma en ligne est utilisé pour étendre la structure relationnelle existante avant de charger les données. S’il existe des conflits (par exemple, la même colonne dans la même table définie avec différents types de données) une exception est levée.

Si aucun schéma en ligne n’est spécifié, la structure relationnelle est étendue par inférence, selon la structure du document XML. Si le schéma ne peut pas être étendu par inférence pour exposer toutes les données, une exception est levée.

Note

L’élément DataSet XML n’est pas associé à ses caractères XML correspondants DataColumn ou DataTable lorsque des caractères XML juridiques tels que (« _ ») sont placés dans le code XML sérialisé. Elle-même DataSet n’échappe qu’aux caractères XML non valides dans les noms d’éléments XML et ne peut donc consommer que la même chose. Lorsque les caractères juridiques du nom d’élément XML sont échappés, l’élément est ignoré lors du traitement.

Voir aussi

S’applique à

ReadXml(TextReader)

Lit le schéma XML et les données dans l’utilisation DataTable de l’élément spécifié 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

Paramètres

reader
TextReader

Utilisé TextReader pour lire les données.

Retours

XmlReadMode Utilisé pour lire les données.

Exemples

L’exemple suivant crée une DataTable colonne contenant deux colonnes et dix lignes. L’exemple écrit le schéma et les DataTable données dans un flux de mémoire en appelant la WriteXml méthode. L’exemple crée une seconde DataTable et appelle la méthode pour la ReadXml remplir avec le schéma et les données.

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

Remarques

Le courant DataTable et ses descendants sont chargés avec les données de l’élément fourni TextReader. Le comportement de cette méthode est identique à celui de la DataSet.ReadXml méthode, sauf que dans ce cas, les données sont chargées uniquement pour la table actuelle et ses descendants.

La ReadXml méthode permet de lire uniquement les données ou les données et le schéma dans un DataTable document XML, tandis que la ReadXmlSchema méthode lit uniquement le schéma.

Notez que la même chose est vraie pour les méthodes et WriteXmlSchema les WriteXml méthodes, respectivement. Pour écrire des données XML, ou des schémas et des données à partir du DataTable, utilisez la WriteXml méthode. Pour écrire uniquement le schéma, utilisez la WriteXmlSchema méthode.

Note

Une InvalidOperationException exception est levée si un type de colonne dans l’objet DataRow lu ou écrit pour implémenter IDynamicMetaObjectProvider et n’implémente IXmlSerializablepas .

Si un schéma en ligne est spécifié, le schéma en ligne est utilisé pour étendre la structure relationnelle existante avant de charger les données. S’il existe des conflits (par exemple, la même colonne dans la même table définie avec différents types de données) une exception est levée.

Si aucun schéma en ligne n’est spécifié, la structure relationnelle est étendue par inférence, selon la structure du document XML. Si le schéma ne peut pas être étendu par inférence pour exposer toutes les données, une exception est levée.

Note

L’élément DataSet XML n’est pas associé à ses caractères XML correspondants DataColumn ou DataTable lorsque des caractères XML juridiques tels que (« _ ») sont placés dans le code XML sérialisé. Elle-même DataSet n’échappe qu’aux caractères XML non valides dans les noms d’éléments XML et ne peut donc consommer que la même chose. Lorsque les caractères juridiques du nom d’élément XML sont échappés, l’élément est ignoré lors du traitement.

Voir aussi

S’applique à

ReadXml(String)

Lit le schéma XML et les données dans le DataTable fichier spécifié.

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

Paramètres

fileName
String

Nom du fichier à partir duquel lire les données.

Retours

XmlReadMode Utilisé pour lire les données.

Exemples

L’exemple suivant crée une DataTable colonne contenant deux colonnes et dix lignes. L’exemple écrit le schéma et les DataTable données sur le disque. L’exemple crée une seconde DataTable et appelle la méthode pour la ReadXml remplir avec le schéma et les données.

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

Remarques

Les éléments actuels DataTable et descendants sont chargés avec les données du fichier nommé dans le fichier fourni String. Le comportement de cette méthode est identique à celui de la DataSet.ReadXml méthode, sauf que dans ce cas, les données sont chargées uniquement pour la table actuelle et ses descendants.

La ReadXml méthode permet de lire uniquement les données ou les données et le schéma dans un DataTable document XML, tandis que la ReadXmlSchema méthode lit uniquement le schéma.

Notez que la même chose est vraie pour les méthodes et WriteXmlSchema les WriteXml méthodes, respectivement. Pour écrire des données XML, ou des schémas et des données à partir du DataTable, utilisez la WriteXml méthode. Pour écrire uniquement le schéma, utilisez la WriteXmlSchema méthode.

Note

Une InvalidOperationException exception est levée si un type de colonne dans l’objet DataRow lu ou écrit pour implémenter IDynamicMetaObjectProvider et n’implémente IXmlSerializablepas .

Si un schéma en ligne est spécifié, le schéma en ligne est utilisé pour étendre la structure relationnelle existante avant de charger les données. S’il existe des conflits (par exemple, la même colonne dans la même table définie avec différents types de données) une exception est levée.

Si aucun schéma en ligne n’est spécifié, la structure relationnelle est étendue par inférence, selon la structure du document XML. Si le schéma ne peut pas être étendu par inférence pour exposer toutes les données, une exception est levée.

Note

L’élément DataSet XML n’est pas associé à ses caractères XML correspondants DataColumn ou DataTable lorsque des caractères XML juridiques tels que (« _ ») sont placés dans le code XML sérialisé. Elle-même DataSet n’échappe qu’aux caractères XML non valides dans les noms d’éléments XML et ne peut donc consommer que la même chose. Lorsque les caractères juridiques du nom d’élément XML sont échappés, l’élément est ignoré lors du traitement.

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");
   }
}

Voir aussi

S’applique à

ReadXml(XmlReader)

Lit le schéma XML et les données dans l’utilisation DataTable de l’élément spécifié 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

Paramètres

reader
XmlReader

Utilisé XmlReader pour lire les données.

Retours

XmlReadMode Utilisé pour lire les données.

Exemples

L’exemple suivant crée une DataTable colonne contenant deux colonnes et dix lignes. L’exemple écrit le schéma et les DataTable données dans un XmlReader. L’exemple crée une seconde DataTable et appelle la méthode pour la ReadXml remplir avec le schéma et les données de l’instance 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

Remarques

Les éléments actuels DataTable et descendants sont chargés avec les données du fichier nommé dans le fichier fourni XmlReader. Le comportement de cette méthode est identique à celui de la ReadXml méthode, sauf que dans ce cas, les données sont chargées uniquement pour la table actuelle et ses descendants.

La ReadXml méthode permet de lire uniquement les données ou les données et le schéma dans un DataTable document XML, tandis que la ReadXmlSchema méthode lit uniquement le schéma.

Notez que la même chose est vraie pour les méthodes et WriteXmlSchema les WriteXml méthodes, respectivement. Pour écrire des données XML, ou des schémas et des données à partir du DataTable, utilisez la WriteXml méthode. Pour écrire uniquement le schéma, utilisez la WriteXmlSchema méthode.

Note

Une InvalidOperationException exception est levée si un type de colonne dans l’objet DataRow lu ou écrit pour implémenter IDynamicMetaObjectProvider et n’implémente IXmlSerializablepas .

Si un schéma en ligne est spécifié, le schéma en ligne est utilisé pour étendre la structure relationnelle existante avant de charger les données. S’il existe des conflits (par exemple, la même colonne dans la même table définie avec différents types de données) une exception est levée.

Si aucun schéma en ligne n’est spécifié, la structure relationnelle est étendue par inférence, selon la structure du document XML. Si le schéma ne peut pas être étendu par inférence pour exposer toutes les données, une exception est levée.

Note

L’élément DataSet XML n’est pas associé à ses caractères XML correspondants DataColumn ou DataTable lorsque des caractères XML juridiques tels que (« _ ») sont placés dans le code XML sérialisé. Elle-même DataSet n’échappe qu’aux caractères XML non valides dans les noms d’éléments XML et ne peut donc consommer que la même chose. Lorsque les caractères juridiques du nom d’élément XML sont échappés, l’élément est ignoré lors du traitement.

Voir aussi

S’applique à