Introduction

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

1. Un peu d'histoire

XML est un langage de balise dérivé d’HTML et SGML, utilisé à partir de la fin des années 90. L’un des buts de ce langage est de décrire n’importe quel type de données d’une façon qui soit la plus portable possible. Ce langage a été rendu indispensable par l’expansion rapide de l’utilisation des serveurs web, bases de données, et autres serveurs de fichiers. Ces systèmes distribués peuvent vivre à de très grandes distances les uns des autres, et doivent malgré cela communiquer et échanger leurs données de façon parfaitement fiable. Le XML a donc été créé pour répondre à ce besoin : assurer l’interopérabilité de systèmes d’information, quels que soient les systèmes et logiciels qui les gèrent. Les spécifications du XML sont indépendantes de Java et sont gérées par le W3C (http://www.w3c.org/). Il était logique que Java, dont la portabilité est l’un des premiers buts, s’intéresse immédiatement au support d’XML. Les premières API sont sorties quasiment en même temps qu’XML devenait largement utilisé. La définition de la gestion des fichiers et flux XML est géré par un jeu d’interfaces, de classes abstraites et d’implémentations par défaut dans le package javax.xml. Certaines fonctionnalités telles que JAXB sot disponibles dans le package javax.xml.bind. On distinguera deux parties dans ce document : la première s’intéresse à la définition des formats des fichiers XML : DTD et XML Schema. La seconde portera sur la gestion du contenu XML des fichiers, et décrira les API SAX, DOM et JAXB. Enfin, on donnera des éléments sur le fonctionnement de XPath, qui permet d’interroger un fichier XML, un peu à la façon d’une base de données, et sur XSL, langage de transformations permettant de changer la structure d’un fichier XML, ou de le transformer en HTML ou PDF. Les implémentations des spécifications écrites par le W3C sont assez nombreuses. Citons ici :
  • Xercès, implémentation de SAX et DOM de l’ASF (Apache Software Fondation), utilisé comme implémentation par défaut dans J2SE. C’est une API très complète, mais aussi très volumineuse et lourde à mettre en œuvre. Xalan est l’API qui implémente le XSL.
  • JDom, qui est une implémentation alternative (http://www.jdom.org/).
  • Dom4J, qui implémente également SAX, DOM et XSL. L’API est plus légère, et plus rapide sur la plupart des opérations (http://dom4j.github.io/).
Le support de XML dans le JDK est distribué entre plusieurs API et implémentations. Passons-les rapidement en revue.
  • JAXP : permet de traiter des documents XML, en offrant un support SAX, DOM et XSLT ;
  • JAXB : permet d’établir un lien entre des définitions de documents XML (supporte XML Schema) et des objets Java. Ce lien est décrit dans un document XML, ou directement dans le code Java sous forme d'annotations. JAXB est disponible sous forme d’extension en Java 4, puis intégré au JDK en version 5. La version 6 de Java intègre la version 2 de JAXB. Particulièrement utile pour développer des services REST, JAXB propose également le support de JSON.
  • JAXM : permet d’échanger des messages XML en utilisant SOAP (Simple Object Access Protocol).
  • JAXR : fournit un moyen pour interagir avec les bases de registres XML de type UDDI et ebXML.
  • JAX-RPC : permet d’appeler des procédures distantes (RPC : Remote Procedure Calls) via un protocole SOAP 1.3 ou 2.
  • JAX-WS : joue le même rôle que JAX-RPC. La différence réside dans le modèle de programmation. JAX-WS permet de décalrer des services web en annotant des classes Java, sans écrire de descripteur XML associé.
Nous examinerons JAXP et son implémentation de référence : Xerces. Xerces est développé par l’ASF, et est utilisé dans de très nombreux produits, commerciaux ou non. Nous verrons ensuite un processeur XSLT, également celui de référence, développé aussi par l’ASF : Xalan. Xalan a besoin d’un processeur XML pour fonctionner, et Xerces lui convient parfaitement. Xalan est un ensemble d’API très complet, nous n’en verrons ici qu’une toute petite partie.
API Java pour XML
Retour au blog Java le soir
Cours & Tutoriaux