Link Search Menu Expand Document

DOM - Introduction à l’API

Dans la seconde partie, nous avons eu l’occasion d’étudier 2 technologies permettant d’écrire la définition d’un document XML. Cette troisième partie est également l’occasion de découvrir 2 nouvelles technologies qu’il est possible d’utiliser en parallèle d’un document XML : l’API DOM et XPath.

Ces 2 technologies vont nous permettre d’extraire et exploiter les informations contenues dans un document XML. Débutons immédiatement la première des deux : l’API DOM.

Qu’est-ce que L’API DOM ?

La petite histoire de DOM

DOM ou Document Object Model, son nom complet, est ce qu’on appelle un parseur XML, c’est-à-dire, une technologie grâce à laquelle il est possible de lire un document XML et d’en extraire différentes informations (éléments, attributs, commentaires, etc…) afin de les exploiter.

Comme pour la plupart des technologies abordées dans ce tutoriel, DOM est un standard du W3C et ce, depuis sa première version en 1998. Au moment où j’écris ces lignes, la technologie en est à sa troisième version.

Il est très important de noter que DOM est une recommandation complètement indépendante de toute plate-forme et langage de programmation. Au travers de DOM, le W3C fournit une recommandation, c’est-à-dire une manière d’exploiter les documents XML.

Aujourd’hui, la plupart des langages de programmation propose leur implémentation de DOM :

  • C.
  • C ++.
  • Java.
  • C#.
  • Perl.
  • PHP.
  • etc.

L’arbre XML

Dans le chapitre précédent, je vous disais que DOM est une technologie complètement indépendante de toute plate-forme et langage de programmation et qu’elle se contente de fournir une manière d’exploiter les documents XML.

En réalité, lorsque votre document XML est lu par un parseur DOM, le document est représenté en mémoire sous la forme d’un arbre dans lequel les différents éléments sont liés les uns aux autres par une relation parent/enfant. Il est ensuite possible de passer d’un élément à un autre via un certain nombre de fonctions que nous verrons dans le chapitre suivant.

Je vous propose d’illustrer cette notion d’arbre grâce à un exemple. Soit le document XML suivant :

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<repertoire>
  <!-- John DOE -->
  <personne sexe="masculin">
    <nom>DOE</nom>
    <prenom>John</prenom>
    <telephones>
      <telephone type="fixe">01 02 03 04 05</telephone>
      <telephone type="portable">06 07 08 09 10</telephone>
    </telephones>
  </personne>
</repertoire>

Voici à la figure suivante ce à quoi ressemble l’arbre une fois modélisé.

Modélisation d'un arbre XML

Pour bien comprendre à quoi correspondent les couleurs et les formes, voici la légende en figure suivante.

Légende des icônes utilisées dans l'arbre XML

Dans nos futurs programmes c’est donc ce genre d’arbres que nous allons parcourir afin d’obtenir les informations que l’on souhaite exploiter en passant d’un élément à un autre. Mais avant de voir comment procéder, je vous propose de revenir sur le vocabulaire utilisé par DOM.

Le vocabulaire et les principaux éléments

Dans ce chapitre, nous allons découvrir ensemble le vocabulaire utilisé par le parseur DOM. Nous allons également en profiter pour faire le tour des principaux éléments en terme de programmation.

Document

Définition

Le document comme son nom le laisse deviner désigne le document XML dans son ensemble. Il est donc composé :

  • Du prologue.
  • Du corps.

La classe

Grâce à la classe Document nous allons pouvoir exploiter aussi bien le prologue que le corps de nos documents XML. Cette classe va également se révéler indispensable lorsque nous allons vouloir créer ou modifier des documents XML. En effet, via les nombreuses méthodes proposées, nous allons pouvoir ajouter des éléments, des commentaires, des attributs, etc.

Node

Définition

Un Node ou Nœud en français peut-être véritablement considéré comme l’élément de base d’un arbre XML. Ainsi, toute branche ou feuille est un nœud. Un élément est donc un nœud, tout comme une valeur et un attribut.

Je vous propose de reprendre le schéma vu précédemment et de tenter d’identifier 3 nœuds parmi tous ceux présents (voir la figure suivante).

Des nœuds

La classe

La classe Node nous permet d’obtenir un certain nombre d’informations lors de l’exploitation d’un document XML. Ainsi, il est possible d’obtenir le type du nœud (attribut, valeur, etc.) son nom, sa valeur, la liste des nœuds fils, le nœud parent, etc. Cette classe propose également un certain nombre de méthodes qui vont nous aider à créer et modifier un document XML en offrant par exemple la possibilité de supprimer un nœud, ou d’en remplacer un par un autre, etc.

Element

Définition

Un Element représente une balise d’un document XML. Si l’on reprend le schéma de l’arbre XML du dessus, les éléments sont en bleu.

La classe

La classe Element, en plus de nous fournir le nom de la balise, nous offre de nombreuses fonctionnalités comme par exemple la possibilité de récupérer les informations d’un attribut ou encore de récupérer la listes des noeuds d’un élément portant un nom spécifique.

Attr

Définition

Un Attr désigne un attribut. Si l’on reprend le schéma de l’arbre XML du dessus, les attributs sont en orange.

La classe

La classe Attr, permet d’obtenir un certain nombre d’informations concernant les attributs comme son nom ou encore sa valeur. Cette classe va également nous être utile lorsque l’on voudra créer ou modifier des documents XML.

Text

Définition

Un Text désigne le contenu d’une balise. Si l’on reprend le schéma de l’arbre XML du dessus, ils sont en vert.

La classe

En plus de la donnée textuelle, la classe Text, permet de facilement modifier un document XML en proposant par exemple des méthodes de suppression ou de remplacement de contenu.

Les autres éléments

Il est presque impossible de présenter tous les éléments du DOM vu la densité de la technologie. Sachez cependant que nous avons vu les principaux et qu’un exemple d’utilisation de l’implémentation Java est prévu dans le chapitre suivant.

Concernant les éléments non décrits, il existe par exemple la classe Comment permettant de gérer les commentaires ou encore la classe CDATASection permettant d’exploiter les sections CDATA d’un document XML.

Finalement, sachez que grâce à DOM, il est également possible de vérifier la validité d’un document XML à une définition DTD ou un Schéma XML.

En résumé

  • DOM est une recommandation complètement indépendante de toute plate-forme et langage de programmation ;
  • DOM exploite l’arbre XML d’un document XML.

Ce cours vous plait ?

Retrouvez ce cours en livre physique sur Amazon !