• # Définition d'un Contenthandler

    Posté par (site web personnel) . En réponse au message parseur sax xml. Évalué à 2.

    Salut
    L'idée c'est de définir un Handler qui va intercepter tous les évènements SAX avec les méthodes suivantes:

    // Un bon endroit pour initialiser ta structure de donnée
    public void startDocument ()

    // Invoqué par ton parseur à la fin de l'analyse du document.
    public void endDocument ()

    // Dans cette méthode tu as le nom de l'élément qui vient de
    // démarrer et ses attributs mais pas à ce qu'il contient
    public void startElement (String uri, String localName, String qName, Attributes attributes)
    public void endElement (String uri, String localName, String qName)

    // C'est ici que tu peux récupérer les caractères
    // entre deux éléments.
    // Comme le nom de l'élément parent n'est pas dispo
    // il faut que tu aies un attribut de classe qui te permette de
    // savoir quel est l'élément courant.
    public void characters (char ch[], int start, int length)



    Ce n'est pas la liste exhaustive des méthodes d'un sax handler (gestion des erreurs, des caractères blancs...) mais ce sont les principales.
    Donc dans ton cas tu dois créer une classe qui implémente ContentHandler et l'utiliser à la place de ton ContentHandlerImpl

    Le parsing SAX est indiquée en général pour le traitement des gros fichiers XML (On n'a pas tout l'arbre XML en mémoire) ou lorsque les performances sont importantes (contrôle des éléments à ignorer...).

    Si c'est pour un fichier de configuration ce sera plus intuitif de le coder en DOM (tu as un arbre XML en mémoire et tu te ballades dedans sans te soucier de la séquence des éléments).