SAX Parser - Présentation

SAX (l'API simple pour XML) est un analyseur basé sur les événements pour les documents xml. Contrairement à un analyseur DOM, un analyseur SAX ne crée aucun arbre d'analyse. SAX est une interface de streaming pour XML, ce qui signifie que les applications utilisant SAX reçoivent des notifications d'événement concernant le document XML en cours de traitement - un élément et un attribut, à la fois dans un ordre séquentiel commençant en haut du document et se terminant par la fermeture de l'élément ROOT.

  • 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 le 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 gestionnaire "d'événement" qui doit être enregistré auprès de l'analyseur.

  • Au fur et à mesure que les jetons sont identifiés, les méthodes de rappel dans le gestionnaire sont appelées avec les informations pertinentes.

Quand utiliser?

Vous devez utiliser un analyseur SAX 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 consommera beaucoup 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 SAX 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 de modifier l'ordre des éléments, vous devez écrire le code et stocker les données vous-même.

Interface ContentHandler

Cette interface spécifie les méthodes de rappel utilisées par l'analyseur SAX pour notifier à un programme d'application les composants du document XML qu'il a vus.

  • void startDocument() - Appelé au début d'un document.

  • void endDocument() - Appelé au début d'un document.

  • void startElement(String uri, String localName, String qName, Attributes atts) - Appelé au début d'un élément.

  • void endElement(String uri, String localName,String qName) - Appelé à la fin d'un élément.

  • void characters(char[] ch, int start, int length) - Appelé lorsque les données de caractère sont rencontrées.

  • void ignorableWhitespace( char[] ch, int start, int length) - Appelé lorsqu'une DTD est présente et qu'un espace blanc ignorable est rencontré.

  • void processingInstruction(String target, String data) - Appelé lorsqu'une instruction de traitement est reconnue.

  • void setDocumentLocator(Locator locator)) - Fournit un localisateur qui peut être utilisé pour identifier les positions dans le document.

  • void skippedEntity(String name) - Appelé lorsqu'une entité non résolue est rencontrée.

  • void startPrefixMapping(String prefix, String uri) - Appelé lorsqu'un nouveau mappage d'espace de noms est défini.

  • void endPrefixMapping(String prefix) - Appelé lorsqu'une définition d'espace de noms termine sa portée.

Interface d'attributs

Cette interface spécifie les méthodes de traitement des attributs connectés à un élément.

  • int getLength() - Renvoie le nombre d'attributs.

  • String getQName(int index)

  • String getValue(int index)

  • String getValue(String qname)