Condividi tramite


Scrittura del contenuto di DataSet come dati XML (ADO.NET)

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 (XML Schema Definition Language). 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 in formato 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 forniscono una notevole flessibilità per la modalità di 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()
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 dal DataSet (come XML Schema) 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 è la 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.

Opzione XmlWriteMode

Descrizione

IgnoreSchema

Scrive i contenuti correnti dell'oggetto DataSet sotto forma di dati XML, senza XML Schema. Questo è il valore predefinito.

WriteSchema

Scrive il contenuto corrente dell'oggetto DataSet come dati XML con la struttura relazionale come XML Schema inline.

DiffGram

Scrive l'intero oggetto DataSet come DiffGram, inclusi i valori originali e quelli correnti. Per ulteriori informazioni, vedere DiffGram (ADO.NET).

Quando si scrive una rappresentazione XML di un oggetto DataSet contenente oggetti DataRelation, può essere utile che nel flusso o documento XML risultante siano presenti le righe figlio di ogni relazione annidata all'interno dei relativi elementi padre. A tale scopo, impostare la proprietà Nested di DataRelation su true quando si aggiunge DataRelation al DataSet. Per ulteriori informazioni, vedere Annidamento di DataRelation (ADO.NET).

Di seguito sono 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)
custDS.WriteXml("Customers.xml", XmlWriteMode.WriteSchema);
Dim xmlSW As System.IO.StreamWriter = New System.IO.StreamWriter("Customers.xml")
custDS.WriteXml(xmlSW, XmlWriteMode.WriteSchema)
xmlSW.Close()
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.

Valore MappingType

Descrizione

Element

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. Ad esempio:

<ColumnName>Column Contents</ColumnName>

Attribute

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. Ad esempio:

<RowElement ColumnName="Column Contents" />

SimpleContent

I contenuti della colonna vengono scritti sotto forma di testo nell'elemento XML per la riga corrente. Ad esempio:

<RowElement>Column Contents</RowElement>

Notare che non è possibile impostare SimpleContent per una colonna di una tabella contenente colonne Element o relazioni annidate.

Hidden

La colonna non viene scritta nell'output XML.

Vedere anche

Concetti

DiffGram (ADO.NET)

Annidamento di DataRelation (ADO.NET)

Scrittura delle informazioni relative allo schema di un DataSet come XSD (ADO.NET)

Altre risorse

Utilizzo di XML in un DataSet (ADO.NET)

DataSet, DataTable e DataView (ADO.NET)