API Java pour le traitement XML

L' API Java pour XML Processing ou JAXP , est l' un des Java - XML - API . Il s'agit d'une API standardisée légère pour la validation , l' analyse , la génération et la transformation de documents XML. L'implémentation respective (non standardisée) de l'API est interchangeable (enfichable). Les quatre interfaces de base sont:

  • l' interface de l'analyseur de modèle d'objet de document ou l' interface DOM
  • l' interface de l' API simple pour l' analyseur XML ou l' interface SAX
  • l' API Streaming pour XML ou l' interface StAX (ajoutée dans JDK 6; disponible séparément en tant que Jar pour JDK 5)
  • l' interface XSLT pour permettre les transformations sur les données et les structures d'un document XML.

Le J2SE 1.4 JDK a été la première version de JDK publiée avec une implémentation de JAXP 1.1; le JSE actuel est fourni avec Apache Xerces et une variante adaptée de Xalan (pour XSLT).

Gestion des versions

Version Java SE version JAXP incluse
1,4 1.1
1,5 1,3
1,6 1,4
1.7.0 1.4.5
1.7.40 1,5
1,8 1,6

Interface DOM

L'interface DOM a une structure très simple. Il analyse un document XML entier et crée une représentation complète «en mémoire» du document. Il utilise les classes et les concepts de la spécification qui peuvent être consultés sous la spécification de base de niveau 2 du modèle objet de document (DOM).

L'analyseur DOM est appelé DocumentBuilder car il fournit une représentation de document en mémoire. Une instance de la classe javax.xml.parsers.DocumentBuilder est créée par la classe Factory javax.xml.parsers.DocumentBuilderFactory . DocumentBuilder crée d'abord une instance org.w3c.dom.Document sous la forme d'une arborescence contenant les nœuds du document XML. Chaque nœud d'arborescence de cette structure implémente l' interface org.w3c.dom.Node . Il existe de nombreux types de nœuds d'arborescence qui représentent les types de données respectifs du document XML.

Les nœuds les plus importants sont:

  • Nœuds d'élément, éventuellement avec des attributs
  • Nœuds de texte qui reflètent le texte trouvé entre les balises de début et de fin d'un élément de document

Pour une liste complète des types de nœuds, reportez-vous à la documentation javadoc du package org.w3c.dom .

Avec le DOM-API, vous pouvez travailler «dans les deux sens», c'est-à-dire du XML au DOM «en mémoire» ainsi que du DOM au XML. Il convient donc non seulement à "l'analyse" du XML, mais également à la génération de XML (flux ou fichiers).

Interface SAX

L'analyseur SAX, également appelé SAXParser, est créé par javax.xml.parsers.SAXParserFactory . Contrairement à l'analyseur DOM, le SAXParser ne crée pas de représentation "en mémoire" d'un document XML, ce qui le rend par conséquent plus rapide et moins exigeant en termes de consommation de mémoire. En revanche, le SAXParser informe le client de la structure du document XML via des fonctions de rappel , i. En d'autres termes, les méthodes de l'instance DefaultHandler disponibles pour l'analyseur sont exécutées.

La classe DefaultHandler se trouve dans le package org.xml.sax.helpers . Cela implémente le ContentHandler, le ErrorHandler, le DTDHandler et l'interface EntityResolver. La plupart des clients sont intéressés par les méthodes de l'interface ContentHandler.

Les méthodes ContentHandler, implémentées par DefaultHandler, sont appelées dès que l'analyseur SAX rencontre les éléments correspondants du document XML. Les principales méthodes de cette interface sont:

  • les méthodes startDocument () et endDocument () , qui sont appelées sur les balises de début et de fin d'un document XML.
  • les méthodes startElement () et endElement () , qui sont appelées sur les balises de début et de fin d'un élément de document.
  • la méthode characters () . Ceci est appelé avec le contenu entre les balises de début et de fin de l'élément de document XML respectif.

Le client propose une sous-classe de DefaultHandler , qui écrase ces méthodes et traite les données. Cela peut également inclure le stockage des données dans une base de données ou l'écriture dans un flux .

Avec SAX-API, vous ne pouvez travailler «que dans un seul sens», à savoir du XML «vers« Java ». Il convient donc uniquement à "l'analyse" du XML. Avec SAX, vous ne pouvez pas créer de XML (flux ou fichiers).

Interface XMLPULL

L' API Streaming pour XML (StAX) fait partie de JAXP depuis JAXP 1.2 et donc JSE 6 et J2EE 1.4 . Ceci est utilisé pour lire les données XML à l'aide d'un analyseur dit XMLPULL. XMLPULL est similaire à SAX, sauf que l'analyseur n'envoie pas d'informations à l'application via un mécanisme d'événement ( "PUSH" ), comme c'est le cas avec SAX , mais l'application obtient elle-même les informations suivantes lorsqu'elle en a besoin (" PULL " ). Les analyseurs XMLPULL sont généralement plus efficaces que les analyseurs SAX.

Interface XSLT

Le e x tensible S tylesheet L angue pour T ransformations, en abrégé XSLT , la conversion permet un document XML à d' autres formes de données.

Validation XSD

La validation des fichiers XSD est prise en charge à partir de JAXP 1.2. JAXP 1.2 fait partie de la plate-forme Java de JSE 6.0 et J2EE 1.4.

Preuve individuelle

  1. https://www.jcp.org/en/jsr/detail?id=206
  2. http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113

liens web