Présentons à présent le fonctionnement de la partie DOM de l'API Xerces.

L'API DOM de Xerces est divisée en deux parties. La partie standard DOM W3C se trouve dans la package org.w3c.dom, et l'implémentation dans le package javax.xml.parsers. Rappelons que Xerces est l'implémentation de référence du DOM W3C, et intégré au JDK. Il n'y a donc pas besoin d'ajouter de bibliothèques externes, comme dans le cas de DOM4J, puisque toutes les classes dont nous avons besoin se trouvent dans l'API standard de J2SE.

Notons aussi que, même si certaines classes ou interfaces de cette API portent le même nom que dans DOM4J, et représentent les mêmes notions, elles sont différentes et incompatibles.

Les types suivants sont définis :

  • Node : super-interface de toutes les interfaces utilisées dans un document. On trouve 25 méthodes dans cette interface, qui permettent de manipuler le document, entre autres de gérer les nœuds, les attributs, les contenus, etc...

  • NodeList : représente une collection ordonnée de nœuds. On peut regretter que cette interface n’ait pas de rapport avec l'API Collection.

  • Element : représente un élément d’un document XML.

  • Attr : interface qui code les attributs.

Les interfaces suivantes représentent les données équivalentes en XML.

  • CharacterData : représente des données de type caractères de type PCDATA, prises en compte par l'analyseur XML.

  • Comment : représente les données de type commentaires.

  • CDATASection : représente des données de type caractères de type CDATA, non analysés.

  • Text : représente les données textuelles.

  • Entity : représente les données de type ENTITY.

  • EntityReference : représente les données de type référence à des entités.

  • ProcessingInstruction : représente des instructions de traitement.

Enfin, ces dernières interfaces représentent tout ou partie d’un document, ainsi que son type.

  • Document ;

  • DocumentFragment ;

  • DocumentType.

L'interface de base de tous les objets que l'on manipule dans cette API est l'interface Node. Tous les objets du DOM étendent donc Node, même si certaines méthodes de Node n'ont pas de sens pour eux. Cette interface permet d'accéder au contenu d'un élément, à ses attributs, à son nom, etc... Elle gère aussi les relations parents / enfants.

Sans entrer dans le détail, citons ici :

  • Les méthodes qui permettent d’accéder aux noms du nœud, en fonction du mode dans lequel on se trouve : getLocalName(), getNameSpaceURI(), getNodeName(), getPrefix().

  • Les méthodes qui gèrent les attributs : getAttributes(), hasAttributes().

  • Les méthodes qui gèrent la valeur du nœud : getNodeName(), getNodeType(), getNodeValue(), setNodeValue().

  • Les méthodes qui gèrent l’arborescence des nœuds :

  • Les méthodes pour ajouter, retirer ou remplacer des nœuds : appendChild(Node), removeChild(Node), replaceChild(Node new, Node old), insertBefore(Node new, Node ref).

  • Citons la méthode cloneNode(Node), qui permet de dupliquer un nœud.

  • Enfin la méthode getOwnerDocument() renvoie une référence du Document qui contient ce nœud.

L'un des méthodes les plus importantes est la méthode getNodeType(), qui retourne le type du nœud que l'on est en train de manipuler. La bonne façon d'utiliser cette API est de vérifier ce type, puis d'appeler les méthodes qui ont un sens en fonction du nœud sur lequel on est. Effectivement, vue la façon dont les choses sont organisées, rien ne nous empêche de demander les enfants d'un nœud de type Text, ce qui n'a bien sûr pas de sens en XML.

API Java pour XML
Retour au blog Java le soir
Cours & Tutoriaux

Table des matières

Introduction
1. Un peu d'histoire
2. Les API Java pour XML
Un premier exemple
1. Introduction
2. Structure de base d’un fichier XML
2.1. Un fichier XML simple
2.2. Notion d’espaces de noms
3. Un premier code pour lire un fichier XML
3.1. Lecture avec Dom4J
Description d’un document XML
1. Introduction
2. Organisation d'un document XML
2.1. Introduction
2.2. Nœuds dans un document XML
2.3. Relations entre nœuds dans un document XML
2.4. Ordre dans un document
2.5. Valeurs atomiques dans un document XML
2.6. Notion de PCDATA et CDATA
3. Document Type Definition (DTD)
3.1. Attacher un document à une DTD
3.2. Contenu d’une DTD
3.3. Exemple de DTD, analyse de web-app_2_3.dtd
4. XML Schema
4.1. Introduction
4.2. Un premier schéma
4.3. Attacher un document XML à un schéma
4.4. Types simples
4.5. Attribut
4.6. Restriction sur une déclaration
4.7. Types complexes
4.8. Contraindre un contenu simple
Lire et écrire du XML
1. Introduction
2. Utilisation de DOM4J
2.1. Introduction
2.2. Un premier exemple simple
2.3. Organisation de l'API
2.4. Classe Namespace
2.5. Classe QName
2.6. Interface Node
2.7. Interface Branch
2.8. Interface Document
2.9. Interface Element
2.10. Interface Attribute
2.11. Interface Text
3. Utilisation de Xerces
3.1. Introduction
3.2. Présentation de SAX
3.3. Présentation de DOM
Analyseur SAX en Xerces
1. Introduction
2. Création d'un analyseur SAX
2.1. Introduction
2.2. Objet DefaultHandler
2.3. Exemple d'analyse d'un fichier
3. Présentation de l'API
3.1. Interface ContentHandler
3.2. Interface ErrorHandler
3.3. Interface DTDHandler
3.4. Interface EntityResolver
3.5. Interface LexicalHandler
Manipuler un DOM en Xerces
1. Introduction
2. Création d'un DOM
3. Présentation de l'API
3.1. Organisation de l'API
3.2. Interface Node
3.3. Interface NodeList
3.4. Interface Element
3.5. Interface Attr
3.6. Interface CharacterData
3.7. Interface Comment
3.8. Interface CDATASection
3.9. Interface Text
3.10. Interface Entity
3.11. Interface EntityReference
3.12. Interface ProcessingInstruction
3.13. Interface Document
3.14. Interface DocumentFragment
3.15. Interface DocumentType
Interroger un document en XPath
1. Introduction, notion de nœud XML
2. Une première requête XPath
2.1. Un premier document à interroger
2.2. Une première requête
2.3. Forme d'une requête XPath