Le langage XML (eXtensible Markup Language) s'est immiscé dans quasiment tous les domaines du développement d'applications. Il sert, par exemple, pour les propriétés des logiciels (menus, langues, etc.) ou comme support pour le transport de données entre différents serveurs Web via un protocole de transmission comme SOAP (Simple Object Access Protocol) ou XML-RPC (XML-Remote Procedure Calling).

Les plateformes Java se devaient donc d'être en mesure d'exploiter le langage XML et son corollaire :

  • Schémas XML ou DTD (Document Type Definition) : validation d'un document XML par rapport à un ensemble de contraintes,
  • XPath : navigation dans l'arborescence d'un document XML,
  • XSLT (XML Stylesheet Language Transformation) : transformation d'un document XML en suivant des modèles spécifiés dans une feuille de style.

Java s'appuie sur les bibliothèques fournies par le module JAXP (Java API XML Processing) pour le traitement de données XML.

La version 1.5 du JDK intègre JAXP spécialisé dans le traitement de données XML. Outre, le support DOM, SAX et XSLT, la plateforme Java supporte désormais le langage XPath, la validation des documents XML, les espaces de noms, les inclusions XML et comprend d'autres API suivant les spécifications DOM 3, comme DOM Events et DOM Load and Save.

JAXP dispose de plusieurs paquetages concourrant à manipuler des informations XML. Les paquetages principaux se situent sous le paquetage javax.xml contenant notamment les analyseurs SAX (Simple API XML) et DOM (Document Object Model) et les paquetages org.xml.sax et org.w3c.dom.

Il existe deux possibilités pour manipuler des documents XML :

  • SAX s'appuie sur un modèle événementiel, lorsque l'analyseur rencontre des endroits particuliers du balisage XML, un événement se produit, lequel peut être utilisé pour récupérer des informations sur son origine,
  • DOM utilise les noeuds fondamentaux (éléments, attributs, texte, etc.) de l'arborescence XML.

Le modèle d'objet de document a été conçu par le W3C. Il existe trois niveaux de spécification énonçant les règles que doivent suivre les différentes implémentations, telles que celle de Java ou d'autres langages comme PHP, C#, etc.

Simple API XML fur originellement un composant Java qui est devenu de facto une norme utilisée par de nombreux autres plateformes, y compris celles de Microsoft. Actuellement, SAX a atteint la version 2, subissant régulièrement des révisions et extensions destinées à améliorer son fonctionnement.

Un aspect important différencie radicalement ces deux moyens de traiter des documents XML.

  • L'utilisation de DOM entraîne un chargement en mémoire de l'ensemble du document XML sous la forme d'une arborescence XML divisée en autant d'objets nodaux que la ressource en possède.
  • Tandis que SAX parcourt le document XML et retourne au fur et à mesure de sa progression des informations sur les noeuds rencontrés, en oubliant ceux examinés auparavant.

En outre, la modification et la sauvegarde de tout ou d'une partie d'un document XML n'est pas possible directement avec SAX. Cette API permet plutôt de consulter des ressources XML lourdes avec des performances acceptables au niveau du temps de traitement et d'encombrement de la mémoire. Par exemple, la consultation d'un fichier XML pour un affichage de ses données dans des pages HTML se fera par le truchement de SAX. En clair, si un document XML ne nécessite pas de modification, il est préférable d'utiliser SAX. De même, si le document XML est lourd, SAX doit être la priorité même s'il faut le modifier à certains endroits. Une implémentation spécifique des gestionnaires d'événements SAX peut être réalisée à cet effet.

DOM ne souffre guère de cette limitation puisque toutes les données sont en mémoire. En conséquence, il suffit de rechercher un noeud à modifier par son nom ou par son identificateur (ID) s'il en possède un ou encore par son chemin, pour consulter sa valeur et éventuellement la modifier. La structure et le style d'un document XML ainsi que les noeuds qui le composent peuvent être accédés, modifiés et mis-à-jour facilement en utilisant les composants de l'architecture DOM.

Sommaire