Scrittura di un DataSet sotto forma di dati XML

In ADO.NET è possibile scrivere una rappresentazione XML di un DataSet, con o senza schema. Se le informazioni relative allo schema sono incluse inline con il flusso o documento XML, tali informazioni verranno scritte utilizzando il linguaggio XSD (Schema Definition Language) di XML. Nello schema sono contenute le definizioni delle tabelle del DataSet, oltre alle definizioni delle relazioni e dei vincoli.

Quando un DataSet viene scritto sotto forma di dati XML, le righe del DataSet vengono scritte utilizzando le versioni correnti. È tuttavia possibile scrivere un DataSet sotto forma di DiffGram, in modo da consentire l'inclusione sia dei valori correnti che dei valori originali delle righe.

È possibile scrivere la rappresentazione XML del DataSet in un file, un flusso, un XmlWriter o una stringa. Queste opzioni consentono una notevole flessibilità nel trasporto della rappresentazione XML del DataSet. Per ottenere una rappresentazione XML del DataSet sotto forma di stringa, utilizzare il metodo GetXml, come illustrato nell'esempio seguente.

Dim xmlDS As String = custDS.GetXml()
[C#]
string xmlDS = custDS.GetXml();

Il metodo GetXml restituisce la rappresentazione XML del DataSet senza alcuna informazione relativa allo schema. Per scrivere le informazioni relative allo schema da un DataSet (come schema XML) a una stringa, utilizzare GetXmlSchema.

Per scrivere un DataSet in un file, un flusso o un XmlWriter, utilizzare il metodo WriteXml. Il primo parametro passato a WriteXml corrisponde alla destinazione dell'output XML. Passare ad esempio una stringa contenente un nome file, un oggetto System.IO.TextWriter e così via. Per specificare la modalità di scrittura dell'output XML, è possibile passare un secondo parametro facoltativo di un XmlWriteMode.

Nella tabella seguente vengono mostrate le opzioni disponibili per XmlWriteMode.

XmlWriteMode Descrizione
IgnoreSchema Consente di scrivere i contenuti correnti del DataSet sotto forma di dati XML, senza schema XML. Si tratta dell'impostazione predefinita.
WriteSchema Consente di scrivere i contenuti correnti del DataSet sotto forma di dati XML e con struttura relazionale sotto forma di schema XML inline.
DiffGram Consente di scrivere l'intero DataSet, inclusi i valori originali e correnti. Per ulteriori informazioni, vedere DiffGram.

Quando si scrive una rappresentazione XML di un DataSet contenente oggetti DataRelation, è probabile che si desideri che nel flusso o documento XML risultante siano presenti le righe figlie di ogni relazione nidificate all'interno dei relativi elementi padre correlati. Per ottenere questo risultato, impostare la proprietà Nested di DataRelation su true quando si aggiunge DataRelation al DataSet. Per ulteriori informazioni, vedere Oggetti DataRelation nidificati.

Di seguito vengono riportati due esempi di scrittura della rappresentazione XML di un DataSet in un file. Nel primo esempio il nome file per il flusso o documento XML risultante viene passato come stringa a WriteXml. Nel secondo esempio viene passato un oggetto System.IO.StreamWriter.

custDS.WriteXml("Customers.xml", XmlWriteMode.WriteSchema)
[C#]
custDS.WriteXml("Customers.xml", XmlWriteMode.WriteSchema);
[Visual Basic]
Dim xmlSW As System.IO.StreamWriter = New System.IO.StreamWriter("Customers.xml")
custDS.WriteXml(xmlSW, XmlWriteMode.WriteSchema)
xmlSW.Close()
[C#]
System.IO.StreamWriter xmlSW = new System.IO.StreamWriter("Customers.xml");
custDS.WriteXml(xmlSW, XmlWriteMode.WriteSchema);
xmlSW.Close();

Mapping di colonne a elementi, attributi e testo XML

La proprietà ColumnMapping dell'oggetto DataColumn consente di specificare la modalità di rappresentazione di una colonna di una tabella in XML. Nella tabella seguente vengono mostrati i diversi valori MappingType per la proprietà ColumnMapping di una colonna di una tabella e il valore XML risultante.

MappingType Descrizione
Elemento Si tratta dell'impostazione predefinita. La colonna viene scritta sotto forma di elemento XML. ColumnName rappresenta il nome dell'elemento e i contenuti della colonna vengono scritti come testo dell'elemento. Esempio:
<ColumnName>Column Contents</ColumnName>
Attributo La colonna viene scritta sotto forma di attributo XML dell'elemento XML per la riga corrente. ColumnName rappresenta il nome dell'attributo e i contenuti della colonna vengono scritti sotto forma di valore dell'attributo. Esempio:
<RowElement ColumnName="Column Contents" />
SimpleContent I contenuti della colonna vengono scritti sotto forma di testo nell'elemento XML per la riga corrente. Esempio:
<RowElement>Column Contents</RowElement>

Si noti che non è possibile impostare SimpleContent per una colonna di una tabella contenente colonne Element o relazioni nidificate.

Hidden La colonna non viene scritta nell'output XML.

Vedere anche

XML e il DataSet | DiffGram | Oggetti DataRelation nidificati | Scrittura delle informazioni relative allo schema di un DataSet come schema XML (XSD) | Creazione e utilizzo di DataSet