2. Création d'un DOM

On peut créer un document DOM vide, ou à partir d’un document XML existant. Dans les deux cas, la première étape consiste à obtenir un objet de type DocumentBuilderFactory, qui pourra nous fournir un objet de type DocumentBuilder. La classe DocumentBuilderFactory est abstraite, on ne peut donc pas l’instancier directement. Elle comporte une classe statique, que l’on peut invoquer, et qui nous renvoie une instance de DocumentBuilderFactory. Ceci constitue un exemple supplémentaire de classe factory.

Exemple 50. Construction d’un objet de type DocumentBuilder

DocumentBuilderFactory dbc = DocumentBuilderFactory.newInstance() ;
DocumentBuilder db = dbc.newDocumentBuilder() ;

La classe DocumentBuilder nous propose deux méthodes :
  • parse() à laquelle il est possible de passer plusieurs types de paramètres. Elle permet de lire un document XML existant, et de construire un DOM dessus.
  • newDocument(), qui permet de construire un DOM vide.
L’objet qui représente le document XML est un objet de type Document. C’est dans cette interface que l’on trouve toutes les méthodes qui permettent de construire un document XML en mémoire. On peut configurer notre DocumentBuilder lors de son invocation, en utilisant par exemple les méthodes setValidating() ou setNamespaceAware(). Enfin, on peut ajouter son propre mécanisme de gestion des erreurs en passant à notre objet DocumentBuilder un objet ErrorHandler, du même type que celui que nous avons décrit dans la présentation de SAX. Cela peut se faire par les lignes suivantes.

Exemple 51. Gestion des erreurs avec un ErrorHandler

ErrorHandler errorHandler =  new ErrorHandler() {
	 // méthode invoquée lors d'une erreur de niveau "fatal" dans l'analyse du document
	 public  void fatalError (SAXParseException e)  throws SAXException {
		 // traitement de cette erreur 
	}

	 // méthode invoquée lors d'une erreur de niveau "error" dans l'analyse du document
	 public  void error (SAXParseException e)  throws SAXException {
		 // traitement de cette erreur 
	}

	 // méthode invoquée lors d'une erreur de niveau "warning" dans l'analyse du document
	 public  void warning (SAXParseException e)  throws SAXException {
		 // traitement de cette erreur 
	}
}

 // création d'un document builder
DocumentBuilder db = ... ;
 // enregistrement de notre handler auprès du document builder
db.setErrorHandler(eh) ;

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