Analyseur Java StAX - Présentation

StAX est une API basée sur Java pour analyser un document XML de la même manière que l'analyseur SAX. Mais il y a deux différences majeures entre les deux API -

  • StAX est une API PULL, tandis que SAX est une API PUSH. Cela signifie que dans le cas de l'analyseur StAX, une application cliente doit demander à l'analyseur StAX d'obtenir des informations à partir de XML chaque fois qu'il en a besoin. Mais dans le cas de l'analyseur SAX, une application client est nécessaire pour obtenir des informations lorsque l'analyseur SAX notifie l'application client que des informations sont disponibles.

  • L'API StAX peut lire et écrire des documents XML. En utilisant SAX API, un fichier XML ne peut être lu.

Configuration de l'environnement

Pour utiliser l'analyseur StAX, vous devez avoir stax.jar dans le chemin de classe de votre application.

Voici les fonctionnalités de l'API StAX -

  • Lit un document XML de haut en bas, en reconnaissant les jetons qui composent un document XML bien formé.

  • Les jetons sont traités dans le même ordre qu'ils apparaissent dans le document.

  • Indique au programme d'application la nature des jetons que l'analyseur a rencontrés au fur et à mesure qu'ils se produisent.

  • Le programme d'application fournit un lecteur "événement" qui agit comme un itérateur et effectue une itération sur l'événement pour obtenir les informations requises. Un autre lecteur disponible est "curseur" qui agit comme un pointeur vers les nœuds XML.

  • Au fur et à mesure que les événements sont identifiés, les éléments XML peuvent être extraits de l'objet événement et peuvent être traités ultérieurement.

Quand utiliser?

Vous devez utiliser un analyseur StAX lorsque -

  • Vous pouvez traiter le document XML de manière linéaire de haut en bas.

  • Le document n'est pas profondément imbriqué.

  • Vous traitez un très gros document XML dont l'arborescence DOM consommerait trop de mémoire. Les implémentations DOM typiques utilisent dix octets de mémoire pour représenter un octet de XML.

  • Le problème à résoudre ne concerne qu'une partie du document XML.

  • Les données sont disponibles dès qu'elles sont vues par l'analyseur, donc StAX fonctionne bien pour un document XML qui arrive sur un flux.

Inconvénients de SAX

  • Nous n'avons pas d'accès aléatoire à un document XML, car il est traité de manière directe uniquement.

  • Si vous avez besoin de garder une trace des données que l'analyseur a vues ou où l'analyseur a changé l'ordre des éléments, vous devez écrire le code et stocker les données vous-même.

Classe XMLEventReader

Cette classe fournit un itérateur d'événements qui peut être utilisé pour parcourir les événements au fur et à mesure qu'ils se produisent lors de l'analyse d'un document XML.

  • StartElement asStartElement() - Utilisé pour récupérer la valeur et les attributs d'un élément.

  • EndElement asEndElement() - Appelé à la fin d'un élément.

  • Characters asCharacters() - Peut être utilisé pour obtenir des caractères tels que CDATA, espaces blancs, etc.

Classe XMLEventWriter

Cette interface spécifie les méthodes de création d'un événement.

  • add(Event event) - Ajouter un événement contenant des éléments à XML.

Classe XMLStreamReader

Cette classe fournit un itérateur d'événements qui peut être utilisé pour parcourir les événements au fur et à mesure qu'ils se produisent lors de l'analyse d'un document XML.

  • int next() - Utilisé pour récupérer le prochain événement.

  • boolean hasNext() - Utilisé pour vérifier que d'autres événements existent ou non.

  • String getText() - Utilisé pour obtenir le texte d'un élément.

  • String getLocalName() - Utilisé pour obtenir le nom d'un élément.

Classe XMLStreamWriter

Cette interface spécifie les méthodes de création d'un événement.

  • writeStartElement(String localName) - Ajouter un élément de départ du nom donné.

  • writeEndElement(String localName) - Ajouter un élément de fin de nom donné.

  • writeAttribute(String localName, String value) - Ecrire des attributs à un élément.