Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La classe XmlDataDocument est une classe dérivée de XmlDocument et contient des données XML. L’avantage de XmlDataDocument est qu’il fournit un pont entre les données relationnelles et hiérarchiques. Il s’agit d’un XmlDocument qui peut être lié à un DataSet et les deux classes peuvent synchroniser les modifications apportées aux données contenues dans les deux classes. Un XmlDocument lié à un DataSet permet au xml de s’intégrer à des données relationnelles et vous n’avez pas besoin de représenter vos données en tant que XML ou dans un format relationnel. Vous pouvez effectuer les deux opérations et ne pas être contraintes à une représentation unique des données.
Les avantages d’avoir des données disponibles dans deux vues sont les suivants :
La partie structurée d’un document XML peut être mappée à un jeu de données et être stockée, indexée et recherchée efficacement.
Les transformations, la validation et la navigation peuvent être effectuées efficacement via un modèle de curseur sur les données XML stockées relationnellement. Parfois, elle peut être effectuée plus efficacement par rapport aux structures relationnelles que si le code XML est stocké dans un modèle XmlDocument .
DataSet peut stocker une partie du code XML. Autrement dit, vous pouvez utiliser XPath ou XslTransform pour stocker dans un DataSet uniquement ces éléments et attributs d’intérêt. À partir de là, les modifications peuvent être apportées au sous-ensemble de données plus petit et filtré, avec les modifications propagées aux données plus volumineuses dans XmlDataDocument.
Vous pouvez également exécuter une transformation sur des données qui ont été chargées dans le DataSet à partir de SQL Server. Une autre option consiste à lier des contrôles WinForm et WebForm gérés par des classes .NET Framework à un DataSet rempli à partir d’un flux d’entrée XML.
Outre la prise en charge de XslTransform, un XmlDataDocument expose les données relationnelles aux requêtes XPath et à la validation. En fait, tous les services XML sont disponibles sur les données relationnelles et les installations relationnelles, telles que la liaison de contrôle, le codegen, etc., sont disponibles sur une projection structurée de XML sans compromettre la fidélité XML.
Étant donné que XmlDataDocument est hérité d’un XmlDocument, il fournit une implémentation du DOM W3C. Le fait que le XmlDataDocument soit associé à un DataSet et y stocke un sous-ensemble de ses données ne limite ni ne modifie d'aucune manière son utilisation en tant que XmlDocument. Le code écrit pour consommer un XmlDocument fonctionne sans modification sur un XmlDataDocument. DataSet fournit la vue relationnelle des mêmes données en définissant des tables, des colonnes, des relations et des contraintes, et est un magasin de données utilisateur autonome et en mémoire.
L’illustration suivante montre les différentes associations que les données XML ont avec dataSet et XmlDataDocument :
L’illustration montre que les données XML peuvent être chargées directement dans un DataSet, ce qui permet une manipulation directe avec du code XML de la manière relationnelle. Ou bien, le code XML peut être chargé dans une classe dérivée du DOM, qui est xmlDataDocument, puis chargé et synchronisé avec le DataSet. Étant donné que dataSet et XmlDataDocument sont synchronisés sur un seul ensemble de données, les modifications apportées aux données d’un magasin sont reflétées dans l’autre magasin.
XmlDataDocument hérite de toutes les fonctionnalités d’édition et de navigation de XmlDocument. Il existe des moments où l’utilisation de XmlDataDocument et de ses fonctionnalités héritées, synchronisées avec un DataSet, est une option plus appropriée que de charger du code XML directement dans le DataSet. Le tableau suivant montre les éléments à prendre en compte lors du choix de la méthode à utiliser pour charger le DataSet.
| Quand charger du code XML directement dans un DataSet | Quand synchroniser un XmlDataDocument avec un DataSet |
|---|---|
| Les requêtes de données dans dataSet sont plus faciles à utiliser SQL que XPath. | Les requêtes XPath sont nécessaires sur les données du DataSet. |
| La conservation de l’ordre des éléments dans le code XML source n’est pas critique. | La conservation de l’ordre des éléments dans le code XML source est essentielle. |
| L’espace blanc entre les éléments et la mise en forme n’a pas besoin d’être conservé dans le code XML source. | La conservation de l’espace blanc et de la mise en forme dans le code XML source est essentielle. |
Si le chargement et l’écriture de données XML directement dans et hors d’un DataSet répond à vos besoins, consultez Chargement d’un DataSet à partir de XML et écriture d’un DataSet en tant que données XML.
Si le chargement du DataSet à partir d’un XmlDataDocument répond à vos besoins, consultez Synchronisation d’un jeu de données avec un document XML.