Partager via


Modèle d'Objet de Document XML (DOM)

La classe DOM (Document Object Model) XML est une représentation en mémoire d’un document XML. Le DOM vous permet de lire, manipuler et modifier par programmation un document XML. La classe XmlReader lit également le code XML ; toutefois, il fournit un accès en lecture seule et non mis en cache. Cela signifie qu’il n’existe aucune fonctionnalité permettant de modifier les valeurs d’un attribut ou d’un contenu d’un élément, ou la possibilité d’insérer et de supprimer des nœuds avec XmlReader. La modification est la fonction principale du DOM. Il s’agit de la façon courante et structurée que les données XML sont représentées en mémoire, bien que les données XML réelles soient stockées de manière linéaire lorsqu’elles se trouvent dans un fichier ou proviennent d’un autre objet. Voici les données XML.

Entrée

<?xml version="1.0"?>
  <books>
    <book>
        <author>Carson</author>
        <price format="dollar">31.95</price>
        <pubdate>05/01/2001</pubdate>
    </book>
    <pubinfo>
        <publisher>MSPress</publisher>
        <state>WA</state>
    </pubinfo>
  </books>

L’illustration suivante montre comment la mémoire est structurée lorsque ces données XML sont lues dans la structure DOM.

Structure de document XML Structure de document XML

Dans la structure de document XML, chaque cercle de cette illustration représente un nœud, appelé objet XmlNode . L’objet XmlNode est l’objet de base dans l’arborescence DOM. La classe XmlDocument , qui étend XmlNode, prend en charge les méthodes d’exécution d’opérations sur le document dans son ensemble (par exemple, le chargement en mémoire ou l’enregistrement du code XML dans un fichier. En outre, XmlDocument fournit un moyen d’afficher et de manipuler les nœuds dans l’ensemble du document XML. XmlNode et XmlDocument ont des améliorations de performances et d’utilisation et ont des méthodes et des propriétés pour :

  • Accédez et modifiez des nœuds spécifiques au DOM, tels que les nœuds d’élément, les nœuds de référence d’entité, etc.

  • Récupérez des nœuds entiers, en plus des informations contenues par le nœud, telles que le texte d’un nœud d’élément.

    Remarque

    Si une application ne nécessite pas les fonctionnalités de structure ou de modification fournies par le DOM, les classes XmlReader et XmlWriter fournissent un accès de flux de flux non mis en cache uniquement au format XML. Pour plus d’informations, consultez XmlReader et XmlWriter.

Les objets node ont un ensemble de méthodes et de propriétés, ainsi que des caractéristiques de base et bien définies. Voici quelques-unes de ces caractéristiques :

  • Les nœuds ont un nœud parent unique, un nœud parent étant un nœud directement au-dessus d’eux. Les seuls nœuds qui n’ont pas de parent sont la racine du document, car il s’agit du nœud de niveau supérieur et contient le document lui-même et les fragments de document.

  • La plupart des nœuds peuvent avoir plusieurs nœuds enfants, qui sont des nœuds directement en dessous. Voici une liste de types de nœuds qui peuvent avoir des nœuds enfants.

    • Document

    • DocumentFragment

    • Référence d’entité

    • Élément

    • Attribut

    Les nœuds XmlDeclaration, Notation, Entity, CDATASection, Text, Comment, ProcessingInstruction et DocumentType n’ont pas de nœuds enfants.

  • Les nœuds qui se trouvent au même niveau, représentés dans le diagramme par les nœuds book et pubinfo , sont frères.

L’une des caractéristiques du DOM est la façon dont elle gère les attributs. Les attributs ne sont pas des nœuds qui font partie des relations parent, enfant et frère. Les attributs sont considérés comme une propriété du nœud d’élément et sont constitués d’un nom et d’une paire valeur. Par exemple, si vous avez des données XML composées de format="dollar« associées à l’élément price, le mot format est le nom et la valeur de l’attribut format est dollar. Pour récupérer l’attribut format="dollar" du nœud de prix , vous appelez la méthode GetAttribute lorsque le curseur se trouve au niveau du price nœud d’élément. Pour plus d’informations, consultez Accès aux attributs dans le DOM.

Comme XML est lu en mémoire, les nœuds sont créés. Toutefois, tous les nœuds ne sont pas du même type. Un élément xml a des règles et une syntaxe différentes de celles d’une instruction de traitement. Par conséquent, à mesure que diverses données sont lues, un type de nœud est affecté à chaque nœud. Ce type de nœud détermine les caractéristiques et les fonctionnalités du nœud.

Pour plus d’informations sur les types de nœuds générés en mémoire, consultez Types de nœuds XML. Pour plus d’informations sur les objets créés dans l’arborescence des nœuds, consultez Mappage de la hiérarchie d’objets aux données XML.

Microsoft a étendu les API disponibles dans le Dom Niveau 1 et Niveau 2 du World Wide Web Consortium (W3C) pour faciliter l’utilisation d’un document XML. Tout en prenant entièrement en charge les normes W3C, les classes, méthodes et propriétés supplémentaires ajoutent des fonctionnalités au-delà de ce qui peut être fait à l’aide du DOM XML W3C. De nouvelles classes vous permettent d’accéder aux données relationnelles, ce qui vous permet de synchroniser avec des données ADO.NET, d’exposer simultanément des données au format XML. Pour plus d’informations, consultez Synchronisation d’un DataSet avec un XmlDataDocument.

Le DOM est le plus utile pour lire des données XML en mémoire afin de modifier sa structure, d’ajouter ou de supprimer des nœuds, ou de modifier les données détenues par un nœud comme dans le texte contenu par un élément. Toutefois, d’autres classes sont disponibles plus rapidement que le DOM dans d’autres scénarios. Pour un accès en continu rapide et non mis en cache uniquement au format XML, utilisez xmlReader et XmlWriter. Si vous avez besoin d’un accès aléatoire avec un modèle de curseur et XPath, utilisez la classe XPathNavigator .

Voir aussi