Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PARCOURS PRÉFIXE (EN PROFONDEUR) D'UN DOCUMENT XML


Information sur la source

Description

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

  • 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());
  • }
  • }
  • }
  • }
    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.
 

Commentaires et avis

signaler à un administrateur
Commentaire de loloof64 le 26/11/2007 13:28:28

Ta variable arbre, c'est une instance de quelle classe ?

j'ai posté une source qui construit une DefaultMutableTreeNode (qui est peut être ajoutée à un JTree) : crétaeur de arborescence TreeNode à partir de XML.

Alors tu as cherché et tu n'as pas trouvé ... mais il en existait bien une .

signaler à un administrateur
Commentaire de NeoZ le 26/11/2007 20:25:37

Salut,
Si j'ai vu ta source, mais je ne voulais pas me servir de cette classe (DefaultMutableTreeNode) qui fait ce que je cherchais au bout de quelques 300 lignes et qui impose de se servir de swing.
L'arbre que j'utilise est en fait un dictionnaire (26 branches de l'alphabet dans la version de base) et qui ajoute des noeuds enfants au fur et à mesure qu'il parcourt un mot.
En gros, je voulais éviter d'autres personnes de devoir télécharger ta source pour trouver l'algo d'un parcours préfixe ;-)
Merci quand meme pour ta source, elle m'a servi !

signaler à un administrateur
Commentaire de loloof64 le 27/11/2007 14:58:24

Salut, tu veux me faire passer pour le dernier des crétins : vas-y, mets-toi à l'aise. Cela ne me dérange pas, au contraire, tu me donnes une occasion suplémentaire de tempérer mes tempéraments belliqueux.

Ne prends pas cela comme une quelconque déclaration de toute sorte : je voulais juste te remercier.

signaler à un administrateur
Commentaire de loloof64 le 27/11/2007 15:38:44

Excuse moi, je télécharge ta source, même si tu n'as pas forcément été 100% agréable avec moi (cf. ton ancien post) .

signaler à un administrateur
Commentaire de NeoZ le 27/11/2007 18:06:10

pour le respect du site, j'vais me contenter de répéter que c'est simplement ce morceau de code que je voulais mettre à disposition, et oui il a été inspiré de ta source http://www.javafr.com/codes/CREATEUR-ARBORESCENCE-TREENODE-PARTIR-XML_44658.aspx
Cordialement.

signaler à un administrateur
Commentaire de loloof64 le 27/11/2007 19:50:02

Non , tu as mal compris
Je ne me plainds pas de la réutilistion de mon code (si je le poste, je m'engage à ce qu'il soit librement modifiable), c'est dans le ton de ton message que cela m'est paru exaspérant
--- tu dis que tu as voulu par-là même, "éviter aux autres de télécharger mon code" : si cela n'est pas de la mauvaise pub ...
--- je sais ce qu'est un dictionnaire de la langue française (inutile de me préciser qu'il y a 26 lettres)

Alors j'aurais voulu que tu comprennes que j'avais des raisons d'être exaspéré en lisant ton message .

signaler à un administrateur
Commentaire de samconstantine le 28/11/2007 12:59:24

j'ai un probleme ,comment integrer une application java à une autre
application par exemple: j'ai un logiciel mais pour l'utiliser il faut
le donne le clé,j'ai realise une application qui genère des clés mais
comment faire relier avec cet logiciel

signaler à un administrateur
Commentaire de nadjet24 le 14/04/2008 19:48:27

bonjour je souhaite avoir un parseur que j'aurai un fichier xml en entrée et avoir en sortie uen arboressence j'ignore que si ce programme repond à ça.merci votre aide.

signaler à un administrateur
Commentaire de NeoZ le 24/04/2008 23:00:06

Bonsoir Nadjet24,
Pour parcourir ton fichier XML, je te conseille plutot de te documenter sur un outil comme JDOM, spécialisé dans ce genre de manipulation.
La source ici sert plutot à faire un parcours préfixe d'un arbre quelconque.
Bon courage !

signaler à un administrateur
Commentaire de loloof64 le 26/04/2008 12:26:00

Bonjour Nadjet24, mon programme permet en effet d'obtenir l'arborescence d'un fichier xml passé en entrée (par contre il faut télécharger la version 6 de Java sur www.sun.com, le jdk6, pour intel386 si tu as un processeur intel ou amd non 64, il y a une section download Java 6 Kit, qqch de ce genre ).
Tu peux faire cela de plusieures manieres
-> mettre les noms qui seront affichés dans les noeuds de l'arbre dans les attributs de tes balises et préciser le mode par attributs
-> mettre les noms qui seront affichés dans les noeuds de l'arbre en noms de balises et préciser le mode par balises
-> mettre les noms qui seront affichés à l'intérieur des balises et préciser le mode par valeurs .
...
http://java.sun.com/javase/downloads/index.jsp => jdk6
et le programme devrait fonctionner si tu précises le jdk 6 sous Eclispe ou Netbeans (je ne sais pas quel IDE tu utilises)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

JDOM - XML - Erreur de lecture de caracteres [ par estetzein ] Bonjour,Voila, j'utilise JDOM pr manipuler mon fichier XML.Aussi, lorsque je le parse, je recupere une erreur : java.io.UTFDataFormatException: Invali JDOM : recherche d'éléments dans un arbre XML [ par newfsch ] Bonjour, j'utilise JDOM pour traiter des documents XML. Ma question est la suivante : Comment se posiitionner ou sélectionner un ou des éléments pas l Parser du XML avec JDOM en java [ par red210 ] Voila je pose une ptit questin concernant le XML... Je viens tout juste de lire un super tuto pour lire et générer du XML ca me pousse &#224 [XML] Parseur (SAX ou JDOM) + Utilisation DTD [ par zeldoi5 ] Bonjour, j'ai deux questions à vous poser, désolé si ces dernières ont déjà été posées, mais je n'ai trou Balise xml et JDOM [ par Ekik ] Bonjours,Voila mon problème, je dois afficher dans un fichier une balise comme ceci<code><target></code>J'aimerai que <target> Probleme d'import de package avec eclipse [ par MoOx_t ] Bonjour a tous!Voila ma situation : Je suis en stage de fin d'étude en IUT d'informatique et je réalise un etude sur le portage d'une interf lecture fichier XML par JDOM [ par sifsimo ] bonjour,je suis débutant en programmation. j'ai un fichier XML que je lis en utlisant JDOM.  j'arrive à lire le fichier. mais je n'arrive pas à tester Creer un document XML à partir d'un autre en Indexant sa structure avec jdom [ par lili_rose ] Bonjour tout le monde, Je suis étudiante en 5ème année d'ingénieur et je prépare mon mémoire de fin d'études sur l'indexation des documents XML. Au fa Creer un document XML à partir d'un autre en Indexant sa structure avec jdom [ par lili_rose ] Bonjour tout le monde, Je suis étudiante en 5ème année d'ingénieur et je prépare mon mémoire de fin d'études sur l'indexation des documents XML. Au fa recuperation des noeuds d'arbre Xml avec jdom [ par kaninama ] Bonjour tout le monde, je veux récupérer tous les noeuds d'un arbre xml a l'aide de jdom mais après les langues recherche que j'ais fa


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.