begin process at 2012 02 12 15:30:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths et Algorithmes

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

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.


 Sources de la même categorie

IMPLÉMENTATION DE L'ENSEMBLE C AVEC JAVA par Scupper
CALCUL D'EXPONENTIEL ( PRÉCISION MODIFIABLE) par Scupper
Source avec Zip TRANSFORMATION D'UNE EXPRESSION ARITHMETIQUE (INFIXÉ) EN POS... par billatosco
PROBLÈME DES N-REINES par jojolemariole
Source avec Zip ARRAYMATRIX -MATRICE MULTIDIMENSIONELLE ET GÉNÉRIQUE- , IMP... par labandus

 Sources en rapport avec celle ci

ENREGISTRER L'ARBORESCENCE D'UN JTREE DANS UN XML AVEC JDOM par coltman
Source avec Zip GÉNÉRATEUR DE FLUX RSS par mimosa803
Source avec Zip Source avec une capture MANIPULATION DE FICHIER XML par hedi_tounsi
Source avec Zip PROCESSEUR XSLT par yeddoughmi
CREER UN FICHIER XML AVEC DOM ET U E BASE DE DONNEES par lolofx

Commentaires et avis

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 .

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 !

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.

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) .

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.

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 .

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

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.

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 !

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...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,059 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales