Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo DataTable.ReadXml (XmlReader)

 

Data di pubblicazione: ottobre 2016

Legge i dati in XML Schema e il DataTable utilizzando l'oggetto specificato XmlReader.

Spazio dei nomi:   System.Data
Assembly:  System.Data (in System.Data.dll)

public XmlReadMode ReadXml(
	XmlReader reader
)

Parametri

reader
Type: System.Xml.XmlReader

Il XmlReader che verrà utilizzato per leggere i dati.

Valore restituito

Type: System.Data.XmlReadMode

Il XmlReadMode utilizzato per leggere i dati.

Corrente DataTable e i suoi discendenti vengono caricati con i dati dal file denominato nel parametro XmlReader. Il comportamento di questo metodo è identico a quello del ReadXml (metodo), tranne che in questo caso, i dati vengono caricati solo per la tabella corrente e i relativi discendenti.

Il ReadXml metodo fornisce un modo per leggere solo i dati o dati e schema in un DataTable da un documento XML, mentre il ReadXmlSchema metodo legge solo lo schema.

Si noti che lo stesso vale per il WriteXml e WriteXmlSchema metodi, rispettivamente. Per scrivere i dati XML oppure lo schema e dati dal DataTable, utilizzare il WriteXml metodo. Per scrivere solo lo schema, utilizzare il WriteXmlSchema metodo.

System_CAPS_noteNota

Un InvalidOperationException Se in un tipo di colonna, verrà generata la DataRow da cui leggere o scrivere implementa IDynamicMetaObjectProvider e non implementa IXmlSerializable.

Se viene specificato uno schema inline, lo schema inline viene utilizzato 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 diversi tipi di dati) viene generata un'eccezione.

Se viene specificato alcuno schema inline, la struttura relazionale viene esteso 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.

System_CAPS_noteNota

Il DataSet non associa un elemento XML con il corrispondente DataColumn o DataTable caratteri XML validi come ("_") quando vengono sottoposti a escape nel XML serializzato. Il DataSet solo effettua l'escape di caratteri XML non validi nei nomi degli elementi XML e pertanto può utilizzare solo lo stesso. Quando vengono sottoposti a escape caratteri validi nel nome dell'elemento XML, l'elemento viene ignorato durante l'elaborazione.

Nell'esempio seguente viene creato un DataTable contenente due colonne e dieci righe. Nell'esempio viene scritto il DataTable schemi e dati a un XmlReader. Nell'esempio viene creato un secondo DataTable e chiama il ReadXml per compilarlo con schema e i dati dal metodo di XmlReader istanza.

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

.NET Framework
Disponibile da 2.0
Torna all'inizio
Mostra: