IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

Parcourir un arbre XML et récupérer des infos


Sujet :

Format d'échange (XML, JSON...) Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2006
    Messages
    621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2006
    Messages : 621
    Par défaut Parcourir un arbre XML et récupérer des infos
    Bonjour,
    j'ai un fichier XML qui a cette tête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?xml version="1.0" encoding="UTF-8"?>
    <config>
    	<entite id="1" adresse_site="test1">
    		<group id="id1" adresse_site="g1">
    			<valeur>valeur 1</valeur>
    		</group>
    		<group id="id2" adresse_site="g2">
    			<valeur>valeur 2</valeur>
    		</group>
    		<group id="id3" adresse_site="g3">
    			<valeur>valeur 3</valeur>
    		</group>
     
    	</entite>
    	<entite id="2" adresse_site="test2">
    		<group id="id21" adresse_site="g21">
    			<valeur>valeur 21</valeur>
    		</group>
    		<group id="id22" adresse_site="g22">
    			<valeur>valeur 22</valeur>
    		</group>
     
     
    	</entite>
    	<application></application>
    </config>
    J'ai beau avoir parcouru des dizaines de sujets faq et autres aides, je n'arrive pas a trouver le code qui me permettrait de parcourir facilement un arbre XML comme me le permettait la librairie NativeXml en Delphi.
    Par exemple, comment faire pour avoir la valeur "test1 dans la première entité ?
    comment avoir la liste des nodes "entite" ?
    comment avoir la liste des nodes dans "<entite id=1>" ?

    Je rame completement...
    A priori je en peux pas utiliser JDOM car je ne peux rien télécharger au boulot...

    Merci a tous

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par arkhamon Voir le message
    A priori je en peux pas utiliser JDOM car je ne peux rien télécharger au boulot...
    Sans bibliothèque thirdparties (comme JDOM par exemple,) je confirme, tu vas galérer grave.

    Il ne te reste plus qu'à utiliser le DOM über-standard 100% W3C-compatible, qui comme tu as remarqué, n'est pas des plus simples à parcourir.

    Une bibliothèque XPath, comme Jaxen ou JXPath, te sauverait... Mais elles aussi, il faut les télécharger.

    Edit : mince, je dis une bêtise. Bien qu'il soit comme le reste un peu bloaté, il y a quand même un moteur XPath depuis Java 1.5. Je regarde comment s'en servir et je viens te dire ça.

    Edit 2 : Voilà comment faire toutes ces petites choses pas trop difficilement, et sans installer de bibliothèque annexe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    XPath xpath = XPathFactory.newInstance().newXPath();
     
    System.out.println(xpath.evaluate("/config/entite[1]/@adresse_site", document));
     
    NodeList entites = (NodeList)xpath.evaluate("/config/entite", document, XPathConstants.NODESET);
    for(int i = 0; i < entites.getLength(); i++) {
      System.out.println(xpath.evaluate("string(.)", entites.item(i)));
    }
     
    NodeList mesNodes = (NodeList)xpath.evaluate("/config/entite[@id='1']/node()", document, XPathConstants.NODESET);
    for(int i = 0; i < mesNodes.getLength(); i++) {
      System.out.println(xpath.evaluate("string(.)", mesNodes.item(i)));
    }
    Bref, appeler XPath à la rescousse et s'en servir autant que possible.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé

    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2006
    Messages
    621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2006
    Messages : 621
    Par défaut
    Merci theluin, véritable expert java...
    Tellement expert que j'ai du mal à suivre...
    Donc ces morceaux de code fonctionnent mais je dois avouer avoir un peu de mal à saisir comment. Du moins pour ces lignes la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(xpath.evaluate("string(.)", entites.item(i)));
    Mais d'un autre côté, j'ai pas trop lu en détail les docs DOM/Xpath... quelqu'un les aurait en format PDF détaillé d'ailleurs ?
    J'ai aussi un soucis : comment récupérer les infos si j'ai un node ?

Discussions similaires

  1. [XML] Comment récupérer des infos XML
    Par beegees dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 18/01/2010, 19h07
  2. Récupérer des infos d'un fichier xml ?
    Par OtObOx dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 06/02/2006, 17h53
  3. [ASP] Récupérer des infos de Session
    Par Frédérick dans le forum ASP
    Réponses: 3
    Dernier message: 07/04/2004, 11h01
  4. Réponses: 6
    Dernier message: 23/12/2003, 15h30
  5. Récupérer des infos sur un AVI
    Par FredericB dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/12/2003, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo