Parcours préfixe (en profondeur) d'un document xml

Contenu du snippet

Après quelques recherches, j'ai vu qu'il n'existait pas de code source du genre à disposition pour parcourir un document xml en passant sur toutes les balises et les attributs.
Donc voici une méthode récursive que j'ai implémenté pour ajouter chaque balise et attribut d'un document XML à un arbre lexical (si la source de l'arbre vous intéresse ...)

Source / Exemple :


private void ajouterDocumentVersArbre(Element racine)
    {
        // Si le noeud courant ne possède pas d'enfants
        if(racine.getChildren().size() == 0)
        {
            // ajout du nom de l'élément
            arbre.ajouter(racine.getName());
            // ajout des attributs de l'élément
            List l = racine.getAttributes();
            if(l.size() > 0)
            {
                Iterator i = l.iterator();
                while(i.hasNext())
                {
                    Attribute att = (Attribute)i.next();
                    arbre.ajouter(att.getName());
                }
            }
        }
        else // le noeud courant possède des enfants
        {
            List list = racine.getChildren();
            Iterator it = list.iterator();
            // on appelle de manière récursive cette méthode
            while(it.hasNext())
            {
                Element elem = (Element)it.next();
                ajouterDocumentVersArbre(elem);
            }
            // ajout du nom du noeud
            arbre.ajouter(racine.getName());
            // ajout des attributs du noeud
            List l = racine.getAttributes();
            if(l.size() > 0)
            {
                Iterator i = l.iterator();
                while(i.hasNext())
                {
                    Attribute att = (Attribute)i.next();
                    arbre.ajouter(att.getName());
                }
            }
        }        
    }

Conclusion :


Voilà, les Objets du DOM utilisés sont ceux du package JDOM, mais on peut très bien les changer.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.