Condividi tramite


DataTable.ReadXml Metodo

Definizione

Legge i dati e lo schema XML nell'oggetto DataTable.

Overload

ReadXml(Stream)

Legge i dati e lo schema XML nella classe DataTable utilizzando la classe Stream specificata.

ReadXml(TextReader)

Legge i dati e lo schema XML nella classe DataTable utilizzando la classe TextReader specificata.

ReadXml(String)

Legge i dati e lo schema XML nella classe DataTable dal file specificato.

ReadXml(XmlReader)

Legge i dati e lo schema XML nell'oggetto DataTable utilizzando l'oggetto XmlReader specificato.

Commenti

Il ReadXml metodo consente di leggere solo i dati o entrambi i dati e lo schema in un DataTable documento XML, mentre il ReadXmlSchema metodo legge solo lo schema. Per leggere sia i dati che lo schema, usare uno degli ReadXML overload che includono il XmlReadMode parametro e impostare il relativo valore su ReadSchema.

Si noti che lo stesso è true rispettivamente per i WriteXml metodi e WriteXmlSchema . Per scrivere dati XML o entrambi gli schemi e i dati dall'oggetto DataTable, usare il WriteXml metodo . Per scrivere solo lo schema, usare il WriteXmlSchema metodo .

Nota

Verrà InvalidOperationException generato se un tipo di colonna nell'oggetto DataRow da leggere o scritto per implementare IDynamicMetaObjectProvider e non implementa IXmlSerializable.

ReadXml(Stream)

Source:
DataTable.cs
Source:
DataTable.cs
Source:
DataTable.cs

Legge i dati e lo schema XML nella classe DataTable utilizzando la classe Stream specificata.

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

Parametri

stream
Stream

Oggetto derivato da Stream.

Restituisce

Modalità XmlReadMode utilizzata per leggere i dati.

Esempio

Nell'esempio seguente viene creato un DataTable oggetto contenente due colonne e dieci righe. L'esempio scrive lo schema e i DataTable dati in un flusso di memoria richiamando il WriteXml metodo . Nell'esempio viene creato un secondo DataTable e viene chiamato il ReadXml metodo per riempirlo con schema e dati.

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

Commenti

I discendenti e correnti DataTable vengono caricati con i dati dell'oggetto fornito Stream. Il comportamento di questo metodo è identico a quello del DataSet.ReadXml metodo, ad eccezione del fatto che in questo caso, i dati vengono caricati solo per la tabella corrente e i relativi discendenti.

Il ReadXml metodo consente di leggere solo i dati o entrambi i dati e lo schema in un DataTable da un documento XML, mentre il ReadXmlSchema metodo legge solo lo schema.

Si noti che lo stesso vale rispettivamente per i WriteXml metodi e WriteXmlSchema . Per scrivere dati XML o sia schema che dati da DataTable, usare il WriteXml metodo . Per scrivere solo lo schema, usare il WriteXmlSchema metodo .

Nota

Verrà InvalidOperationException generata un'eccezione se un tipo di colonna nell'oggetto DataRow da cui viene letto o scritto per implementare IDynamicMetaObjectProvider e non implementa IXmlSerializable.

Se viene specificato uno schema in linea, lo schema in linea viene usato per estendere la struttura relazionale esistente prima di caricare i dati. Se sono presenti conflitti, ad esempio la stessa colonna nella stessa tabella definita con tipi di dati diversi, viene generata un'eccezione.

Se non viene specificato alcuno schema in linea, la struttura relazionale viene estesa tramite inferenza, se necessario, in base alla struttura del documento XML. Se lo schema non può essere esteso tramite inferenza per esporre tutti i dati, viene generata un'eccezione.

Nota

L'oggetto DataSet non associa un elemento XML al corrispondente DataColumn o DataTable quando i caratteri XML legali come ("_") vengono preceduti da un carattere di escape nel codice XML serializzato. L'oggetto DataSet stesso esegue solo l'escape dei caratteri XML non validi nei nomi degli elementi XML e pertanto può utilizzare solo lo stesso. Quando i caratteri legali nel nome dell'elemento XML vengono preceduti da un carattere di escape, l'elemento viene ignorato durante l'elaborazione.

Vedi anche

Si applica a

ReadXml(TextReader)

Source:
DataTable.cs
Source:
DataTable.cs
Source:
DataTable.cs

Legge i dati e lo schema XML nella classe DataTable utilizzando la classe TextReader specificata.

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

Parametri

reader
TextReader

Oggetto TextReader che verrà utilizzato per leggere i dati.

Restituisce

Modalità XmlReadMode utilizzata per leggere i dati.

Esempio

Nell'esempio seguente viene creato un DataTable oggetto contenente due colonne e dieci righe. L'esempio scrive lo schema e i DataTable dati in un flusso di memoria richiamando il WriteXml metodo . Nell'esempio viene creato un secondo DataTable e viene chiamato il ReadXml metodo per riempirlo con schema e dati.

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

Commenti

I discendenti e correnti DataTable vengono caricati con i dati dell'oggetto fornito TextReader. Il comportamento di questo metodo è identico a quello del DataSet.ReadXml metodo, ad eccezione del fatto che in questo caso, i dati vengono caricati solo per la tabella corrente e i relativi discendenti.

Il ReadXml metodo consente di leggere solo i dati o entrambi i dati e lo schema in un DataTable da un documento XML, mentre il ReadXmlSchema metodo legge solo lo schema.

Si noti che lo stesso vale rispettivamente per i WriteXml metodi e WriteXmlSchema . Per scrivere dati XML o sia schema che dati da DataTable, usare il WriteXml metodo . Per scrivere solo lo schema, usare il WriteXmlSchema metodo .

Nota

Verrà InvalidOperationException generata un'eccezione se un tipo di colonna nell'oggetto DataRow da cui viene letto o scritto per implementare IDynamicMetaObjectProvider e non implementa IXmlSerializable.

Se viene specificato uno schema in linea, lo schema in linea viene usato per estendere la struttura relazionale esistente prima di caricare i dati. Se sono presenti conflitti, ad esempio la stessa colonna nella stessa tabella definita con tipi di dati diversi, viene generata un'eccezione.

Se non viene specificato alcuno schema in linea, la struttura relazionale viene estesa tramite inferenza, se necessario, in base alla struttura del documento XML. Se lo schema non può essere esteso tramite inferenza per esporre tutti i dati, viene generata un'eccezione.

Nota

L'oggetto DataSet non associa un elemento XML al corrispondente DataColumn o DataTable quando i caratteri XML legali come ("_") vengono preceduti da un carattere di escape nel codice XML serializzato. L'oggetto DataSet stesso esegue solo l'escape dei caratteri XML non validi nei nomi degli elementi XML e pertanto può utilizzare solo lo stesso. Quando i caratteri legali nel nome dell'elemento XML vengono preceduti da un carattere di escape, l'elemento viene ignorato durante l'elaborazione.

Vedi anche

Si applica a

ReadXml(String)

Source:
DataTable.cs
Source:
DataTable.cs
Source:
DataTable.cs

Legge i dati e lo schema XML nella classe DataTable dal file specificato.

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

Parametri

fileName
String

Nome del file dal quale leggere i dati.

Restituisce

Modalità XmlReadMode utilizzata per leggere i dati.

Esempio

Nell'esempio seguente viene creato un DataTable oggetto contenente due colonne e dieci righe. Nell'esempio vengono scritti lo schema e i DataTable dati su disco. Nell'esempio viene creato un secondo DataTable e viene chiamato il ReadXml metodo per riempirlo con schema e dati.

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

Commenti

L'oggetto corrente DataTable e i relativi discendenti vengono caricati con i dati del file denominato nell'oggetto fornito String. Il comportamento di questo metodo è identico a quello del DataSet.ReadXml metodo, ad eccezione del fatto che in questo caso, i dati vengono caricati solo per la tabella corrente e i relativi discendenti.

Il ReadXml metodo consente di leggere solo i dati o entrambi i dati e lo schema in un DataTable da un documento XML, mentre il ReadXmlSchema metodo legge solo lo schema.

Si noti che lo stesso vale rispettivamente per i WriteXml metodi e WriteXmlSchema . Per scrivere dati XML o sia schema che dati da DataTable, usare il WriteXml metodo . Per scrivere solo lo schema, usare il WriteXmlSchema metodo .

Nota

Verrà InvalidOperationException generata un'eccezione se un tipo di colonna nell'oggetto DataRow da cui viene letto o scritto per implementare IDynamicMetaObjectProvider e non implementa IXmlSerializable.

Se viene specificato uno schema in linea, lo schema in linea viene usato per estendere la struttura relazionale esistente prima di caricare i dati. Se sono presenti conflitti, ad esempio la stessa colonna nella stessa tabella definita con tipi di dati diversi, viene generata un'eccezione.

Se non viene specificato alcuno schema in linea, la struttura relazionale viene estesa tramite inferenza, se necessario, in base alla struttura del documento XML. Se lo schema non può essere esteso tramite inferenza per esporre tutti i dati, viene generata un'eccezione.

Nota

L'oggetto DataSet non associa un elemento XML al corrispondente DataColumn o DataTable quando i caratteri XML legali come ("_") vengono preceduti da un carattere di escape nel codice XML serializzato. L'oggetto DataSet stesso esegue solo l'escape dei caratteri XML non validi nei nomi degli elementi XML e pertanto può utilizzare solo lo stesso. Quando i caratteri legali nel nome dell'elemento XML vengono preceduti da un carattere di escape, l'elemento viene ignorato durante l'elaborazione.

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

Vedi anche

Si applica a

ReadXml(XmlReader)

Source:
DataTable.cs
Source:
DataTable.cs
Source:
DataTable.cs

Legge i dati e lo schema XML nell'oggetto DataTable utilizzando l'oggetto XmlReader specificato.

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

Parametri

reader
XmlReader

Oggetto XmlReader che verrà utilizzato per leggere i dati.

Restituisce

Modalità XmlReadMode utilizzata per leggere i dati.

Esempio

Nell'esempio seguente viene creato un DataTable oggetto contenente due colonne e dieci righe. Nell'esempio vengono scritti lo schema e i DataTable dati in un oggetto XmlReader. Nell'esempio viene creato un secondo DataTable e viene chiamato il ReadXml metodo per riempirlo con lo schema e i dati dell'istanza 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

Commenti

L'oggetto corrente DataTable e i relativi discendenti vengono caricati con i dati del file denominato nell'oggetto fornito XmlReader. Il comportamento di questo metodo è identico a quello del ReadXml metodo, ad eccezione del fatto che in questo caso, i dati vengono caricati solo per la tabella corrente e i relativi discendenti.

Il ReadXml metodo consente di leggere solo i dati o entrambi i dati e lo schema in un DataTable da un documento XML, mentre il ReadXmlSchema metodo legge solo lo schema.

Si noti che lo stesso vale rispettivamente per i WriteXml metodi e WriteXmlSchema . Per scrivere dati XML o sia schema che dati da DataTable, usare il WriteXml metodo . Per scrivere solo lo schema, usare il WriteXmlSchema metodo .

Nota

Verrà InvalidOperationException generata un'eccezione se un tipo di colonna nell'oggetto DataRow da cui viene letto o scritto per implementare IDynamicMetaObjectProvider e non implementa IXmlSerializable.

Se viene specificato uno schema in linea, lo schema in linea viene usato per estendere la struttura relazionale esistente prima di caricare i dati. Se sono presenti conflitti, ad esempio la stessa colonna nella stessa tabella definita con tipi di dati diversi, viene generata un'eccezione.

Se non viene specificato alcuno schema in linea, la struttura relazionale viene estesa tramite inferenza, se necessario, in base alla struttura del documento XML. Se lo schema non può essere esteso tramite inferenza per esporre tutti i dati, viene generata un'eccezione.

Nota

L'oggetto DataSet non associa un elemento XML al corrispondente DataColumn o DataTable quando i caratteri XML legali come ("_") vengono preceduti da un carattere di escape nel codice XML serializzato. L'oggetto DataSet stesso esegue solo l'escape dei caratteri XML non validi nei nomi degli elementi XML e pertanto può utilizzare solo lo stesso. Quando i caratteri legali nel nome dell'elemento XML vengono ignorati, l'elemento viene ignorato durante l'elaborazione.

Vedi anche

Si applica a