3. Utilisation de Xerces

3.1. Introduction

Xerces est l’implémentation de référence de l’API JAXP. JAXP est une API Java qui définit la lecture d'un document XML, son analyse, et éventuellement sa transformation en un autre format. Le support XSL n’est pas présent dans cette API. Cette API est divisée en trois hiérarchies :
  • javax.xml : contient les spécifications de JAXP, principalement sous forme de classes abstraites et d’interfaces. Cette hiérarchie est divisée en deux : parsers, qui concerne l’analyse des documents et les standards DOM et SAX, et transform, qui contient le support XSLT permettant de transformer un document XML en un autre format, notamment en HTML ou en PDF.
  • org.w3c.dom : contient un jeu d’interfaces qui représente la spécification DOM.
  • org.xml.sax : contient les spécifications SAX. Cette hiérarchie est divisée en deux : sax et sax.ext, qui contient les interfaces des spécifications, ainsi que deux classes HandlerBase (classe qui supporte SAX 1, maintenant obsolète) et InputSource.
Les deux classes de base par lesquelles le travail peut commencer sont SAXParserFactory, qui permet de construire un objet de type SAXParser, et DocumentBuilderFactory, par lequel on peut obtenir un objet de type Document, qui supporte le standard DOM.

3.2. Présentation de SAX

Pour comprendre la façon dont il faut utiliser SAX, il faut bien comprendre ce que l’on entend par event driven , c’est à dire géré par événements. Conceptuellement, SAX reçoit un document XML comme s’il était sur un flux. À chaque fois qu’une balise ouvrante est rencontrée, un événement est généré, capté par une certaine méthode d’une certaine classe. L’objet événement transmis à cette méthode permet d’accéder aux attributs de l’élément. Quand un contenu de type caractères non analysés (PCDATA) est rencontré, une certaine méthode, différente, est appelée. Enfin, quand une balise fermante est appelée, une troisième méthode est appelée. Ces méthodes particulières sont bien sûr des call-backs, fournis dans des classes par l’utilisateur, qui doivent implémenter certaines interfaces précises, définies par SAX. Ces méthodes, plus quelques autres, sont définies dans une interface : ContentHandler, qui se trouve dans le package org.xml.sax. Le travail du développeur consiste donc à construire une implémentation de cette interface, et à la passer en paramètre à l’analyseur SAX au moment de sa construction. Utiliser un analyseur SAX consiste donc à écrire des callbacks, implémentations de ContentHandler, et à les enregistrer auprès de l'analyseur. Si conceptuellement les choses peuvent paraître plus abstraites que de manipuler un DOM, techniquement elles sont beaucoup plus simples.

3.3. Présentation de DOM

L’approche de DOM est différente de celle de SAX. Là où SAX propose une gestion par événement de l’analyse d’un document XML, DOM a pour but de construire une structure d’objets représentant le document XML. Cette structure en arbre contient des nœuds, qui sont en général soit des éléments XML, soit des éléments textuels.
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