<XMLiZer />

mercredi, février 23, 2005

Java Specification Requests - # 173 : Streaming API for XML (StAX)

Pour accéder en lecture à des documents XML dans un programme, il y avait jusqu'à récemmentt deux techniques :
  • La méthode de type Push Parser ou parseur évènementiel, personnifié par SAX de David Megginson, dans le lequel le parseur déclenche des appels de méthodes à chaque évenement (ouverture d'élement, fermeture, etc.)

  • Les méthodes d'accès arborescent de type DOM du W3C, JDOM, DOM4J et plus récemment XOM, dans lesquels le document XML est monté en mémoire sous forme d'un arbre

Cependant, il existe une troisième voie : le pull parsing.
Il s'agit en réalité, contrairement au mode évenementiel où le parseur déclenche les appels de méthodes, de demander au parseur quel est l'évenement suivant.
Il est facile de faire le parallèle avec l'envoie d'email par le webmaster d'un site (le push) et le fait de vous y rendre régulièrement physiquement ou grace à RSS (le pull).

Et c'est précisément à ce moment qu'intervient l'API StAX.
StAX est l'API Java, soutenu par BEA, qui a d'ailleurs founi une implémentation de référence, du pull parsing. Cette API, de bas niveau il faut le reconnaître, permet de chercher rapidement un élément et dans certains cas de sauter tout ou partie du document ce qui peut être très utile dans le cas d'un accès simple à un document. Elle a aussi la particularité intéressante d'être utilisable en lecture et en écriture.

Pour le moment, elle ne fait malheureusement pas encore partie de l'API JAXP, incluse dans le JDK, cependant cela ne saurait tarder.
De plus, lorsque XPath sera disponible dans StAX, il n'y aura presque plus de raison valide d'utiliser SAX, si ce n'est pour conserver des développements existants.