L'API DOM (Document Object Model) - XML Facile!

7.L'API DOM (Document Object Model)

7.1.Introduction

L'API DOM (Document Object Model, autrement dit Modèle objet de document) décrit un ensemble de méthodes et classes (elle se base en effet sur la programmation orienté objet[c'est quoi?]) permettant de naviguer et de créer un document de type XML (voire HTML).
Les spécifications du W3C ne proposent pas d'implémentation: libre à chaque éditeur (et langage) de proposer sa propre bibliothèque.
Nous ne nous intéresserons (dans un premier temps du moins) qu'aux méthodes de parcours d'un document existant (au détriment des méthodes de création).

7.2.Le document de référence

Afin d'illustrer nos explications nous nous appuierons sur le document XML suivant:
<?xml version="1.0"?>
<livre revision="3.2">
    <chapitre xml:id="chap1">
        <page>Chapitre 1 - Page 1</page>
    </chapitre>
    <chapitre xml:id="chap2" nom="api dom">
        <page>Chapitre 2 - Page 1</page>
        <page>Chapitre 2 - Page 1</page>
    </chapitre>
</livre>

7.3.L'objet Document

Document est l'objet par lequel commence toute manipulation d'un arbre DOM (REM: Selon l'implémentation son nom peut varier légèrement. Cette classe peut également s'appeler DOMDocument par exemple).
Cet objet présente, entre autres, les attributs et méthodes suivantes:
L'attribut documentElement pointe sur l'élément racine du document (i.e. <livre> dans notre exemple).
La méthode getElementById() permet de retrouver dans l'arbre, l'élément ayant pour identifiant (id) la chaîne de caractères passée en paramètre.
rem
  • Pour un document HTML, l'identifiant est précisé par l'attribut "id"
  • Pour un document XML, l'identifiant est précisé par l'attribut "id" mais avec le préfix "xml" (soit l'attribut complet "xml:id")
La méthode getElementsByTagName() permet de retrouver dans l'arbre, l'ensemble des balises ayant pour nom la chaîne de caractères passée en paramètre.
L'objet Document hérite en outre des méthodes de la classe Node que nous allons voir plus loin.
Ces attributs et méthodes retournent donc un objet Element ou NodeList pour ce qui concerne getElementsByTagName().

7.4.L'objet NodeList

NodeList est un objet contenant une liste de noeuds (typiquement retournée par getElementsByTagName()).
Cet objet offre:
Dans le cas d'une liste de noeud récupérée via getElementsByTagName() l'ensemble des noeuds sont des objets Element (ce qui est rendu possible par le fait que la classe Element hérite de la classe Node).

7.5.L'objet Element

Element est un objet décrivant une balise.
Cet objet propose les attributs et méthodes suivants:
Si l'on reprend l'exemple, alors
L'objet Element hérite en outre des méthodes de la classe Node que nous allons voir.

7.6.L'objet Node

Node est un objet décrivant différents éléments d'un document. Ce peut être une balise (Element) mais aussi un attribut, le texte (d'une balise), un commentaire, une instruction de traitement, etc..
Cet objet expose, entre autres, les attributs et méthodes suivants: