Integrazione di XML con dati relazionali e ADO.NETXML Integration with Relational Data and ADO.NET

La classe XmlDataDocument è una classe derivata di XmlDocument e contiene dati XML.The XmlDataDocument class is a derived class of the XmlDocument, and contains XML data. Il principale vantaggio è costituito dal fatto che XmlDataDocument fornisce un collegamento tra i dati relazionali e quelli gerarchici.The advantage of the XmlDataDocument is that it provides a bridge between relational and hierarchical data. Si tratta infatti di un elemento di XmlDocument che può essere associato a un DataSet ed entrambe le classi sono in grado di sincronizzare le modifiche apportate ai dati in esse contenuti.It is an XmlDocument that can be bound to a DataSet and both classes can synchronize changes made to data contained in the two classes. Usando un elemento di XmlDocument associato a un DataSet è possibile integrare l'XML con i dati relazionali senza dover rappresentare i dati in formato relazionale o XML.An XmlDocument that is bound to a DataSet allows XML to integrate with relational data, and you do not have to have your data represented as either XML or in a relational format. È possibile usare entrambe le rappresentazioni di dati, senza essere costretti a usarne una sola.You can do both and not be constrained to a single representation of the data.

La possibilità di visualizzare i dati in due modi diversi comporta i seguenti vantaggi:The benefits of having data available in two views are:

  • È possibile associare la parte strutturata di un documento XML a un dataset per aumentare l'efficacia delle operazioni di archiviazione, indicizzazione e ricerca.The structured portion of an XML document can be mapped to a dataset, and be efficiently stored, indexed, and searched.

  • Le operazioni di trasformazione, convalida e navigazione possono essere eseguite in modo efficace tramite un modello a cursore per i dati XML archiviati in modo relazionale.Transformations, validation, and navigation can be done efficiently through a cursor model over the XML data that is stored relationally. A volte queste operazioni si rivelano più efficaci se eseguite in strutture relazionali, anziché con dati XML archiviati in un modello XmlDocument.At times, it can be done more efficiently against relational structures than if the XML is stored in an XmlDocument model.

  • È possibile archiviare in un DataSet solo una parte dei dati XML.The DataSet can store a portion of the XML. Questo significa che è possibile usare XPath o XslTransform per archiviare in un DataSet solo gli elementi e gli attributi desiderati.That is, you can use XPath or XslTransform to store to a DataSet only those elements and attributes of interest. Pertanto, è possibile apportare le modifiche a un subset di dati filtrato e di dimensioni minori, quindi propagarle a gruppi di dati di dimensioni maggiori nella classe XmlDataDocument.From there, changes can be made to the smaller, filtered subset of data, with the changes propagating to the larger data in the XmlDataDocument.

È inoltre possibile eseguire una trasformazione dei dati caricati in un DataSet da SQL ServerYou can also run a transform over data that was loaded into the DataSet from SQL Server. e associare controlli gestiti Web Form e Windows Form, costituiti da classi .NET Framework, a un DataSet compilato da un flusso di input XML.Another option is to bind .NET Framework classes-style-managed WinForm and WebForm controls to a DataSet that was populated from an XML input stream.

Oltre a supportare XslTransform, una classe XmlDataDocument consente di esporre i dati relazionali alle operazioni di convalida e query XPath.In addition to supporting XslTransform, an XmlDataDocument exposes relational data to XPath queries and validation. Fondamentalmente, per i dati relazionali sono disponibili tutti i servizi XML. Le funzionalità relazionali, quali l'associazione dei controlli, la chiamata CODEGEN e così via sono inoltre disponibili nelle proiezioni strutturate di XML, senza compromettere la fedeltà al documento XML.Basically, all XML services are available over relational data, and relational facilities, such as control binding, codegen, and so on, are available over a structured projection of XML without compromising XML fidelity.

Dal momento che è ereditata dalla classe XmlDocument, la classe XmlDataDocument fornisce un'implementazione del modello DOM di W3C.Because XmlDataDocument is inherited from an XmlDocument, it provides an implementation of the W3C DOM. L'associazione di XmlDataDocument a un DataSet e il fatto che un subset dei dati di questa classe sia archiviato in un DataSet non ne limitano né modificano in alcun modo l'uso come XmlDocument.The fact that the XmlDataDocument is associated with, and stores a subset of its data within, a DataSet does not restrict or alter its use as an XmlDocument in any way. Il codice scritto per usare XmlDocument funziona anche con XmlDataDocument.Code written to consume an XmlDocument works unaltered against an XmlDataDocument. Il DataSet consente una visualizzazione relazionale degli stessi dati mediante la definizione di tabelle, colonne, relazioni e vincoli. Rappresenta inoltre un archivio dei dati utente autonomo e residente in memoria.The DataSet provides the relational view of the same data by defining tables, columns, relations, and constraints, and is a stand-alone, in-memory user data store.

Nella figura seguente sono illustrate le diverse associazioni dei dati XML con gli oggettiDataSet e XmlDataDocument.The following illustration shows the different associations that XML data has with the DataSet and XmlDataDocument.

XML DataSetXML DataSet

Nella figura viene mostrato che i dati XML possono essere caricati direttamente in un DataSet, per consentirne un'elaborazione diretta con i dati XML in modo relazionale.The illustration shows that XML data can be loaded directly into a DataSet, which allows direct manipulation with XML in the relational manner. In alternativa, i dati XML possono essere caricati in una classe derivata del DOM, la classe XmlDataDocument, quindi possono essere caricati e sincronizzati con il DataSet in un secondo momento.Or, the XML can be loaded into a derived class of the DOM, which is the XmlDataDocument, and subsequently loaded and synchronized with the DataSet. Dal momento che gli oggetti DataSet e XmlDataDocument sono sincronizzati rispetto a un unico set di dati, le modifiche apportate ai dati di un archivio si riflettono nell'altro archivio.Because the DataSet and XmlDataDocument are synchronized over a single set of data, changes made to the data in one store are reflected in the other store.

XmlDataDocument eredita tutte le funzionalità di modifica e di navigazione da XmlDocument.The XmlDataDocument inherits all the editing and navigational features from the XmlDocument. A volte può risultare più conveniente usare un elemento XmlDataDocument con le relative funzionalità ereditate, sincronizzato con un DataSet, anziché caricare i dati XML direttamente in un DataSet.There are times when using the XmlDataDocument and its inherited features, synchronized with a DataSet, is a more appropriate option than loading XML directly into the DataSet. Nella tabella seguente sono indicati gli elementi da considerare nella scelta del metodo di caricamento del DataSet.The following table shows the items to be considered when choosing which method to use to load the DataSet.

Quando caricare i dati XML direttamente in un DataSetWhen to load XML directly into a DataSet Quando sincronizzare una classe XmlDataDocument con un DataSetWhen to synchronize an XmlDataDocument with a DataSet
È più semplice eseguire query di dati in un DataSet usando SQL anziché XPath.Queries of data in the DataSet are easier using SQL than XPath. È necessario eseguire query XPath nei dati del DataSet.XPath queries are needed over data in the DataSet.
Non è necessario conservare l'ordine degli elementi nel documento XML di origine.Preservation of element ordering in the source XML is not critical. È necessario conservare l'ordine degli elementi nel documento XML di origine.Preservation of element ordering in the source XML is critical.
Non è necessario conservare gli spazi vuoti tra gli elementi e la formattazione nel documento XML di origine.White space between elements and formatting does not need to be preserved in the source XML. È necessario conservare gli spazi vuoti tra gli elementi e la formattazione nel documento XML di origine.White space and formatting preservation in the source XML is critical.

Per informazioni sul caricamento e la scrittura dei dati XML direttamente in e da un DataSet, vedere Caricamento di un DataSet da XML e Scrittura di un DataSet sotto forma di dati XML.If loading and writing XML directly into and out of a DataSet addresses your needs, see Loading a DataSet from XML and Writing a DataSet as XML Data.

Per informazioni sul caricamento di un DataSet da una classe XmlDataDocument, vedere Sincronizzazione di un Dataset con un documento XML.If loading the DataSet from an XmlDataDocument addresses your needs, see Synchronizing a Datasetwith an XML Document.

Vedere ancheSee Also

Uso di XML in un set di datiUsing XML in a DataSet