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 :

Accès à un noeud particulier ayant une valeur d'attribut particulière [DOM]


Sujet :

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

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Points : 69
    Points
    69
    Par défaut Accès à un noeud particulier ayant une valeur d'attribut particulière
    Bonjour,

    Je débute avec DOM et jusqu'à présent je m'en sortais pas trop mal mais voila la structure de mon XML me pose quelques souci ...
    Voici le XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <CLIENT num="1">
    <ID>5659BY78</ID>
    <SOCIETE>42</SOCIETE>
    <ADRESSE>
    <LIGNE nb="1" >Service RH</LIGNE >
    <LIGNE nb="2"> 43 route de Paris </LIGNE >
    </ADRESSE>
    <CODE_POSTAL>55555</CODE_POSTAL>
    <VILLE>1H00032619</VILLE>
    </CLIENT>

    Pas de souci pour récupérer en java toutes les valeurs sauf celles contenues dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <ADRESSE>
    <LIGNE nb="1" >Service RH</LIGNE >
    <LIGNE nb="2"> 43 route de Paris </LIGNE >
    </ADRESSE>
    Voici comment je procède pour le reste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     Element racine = document.getDocumentElement();
    //Récupération de l attribut ID
    NodeList nodes = racine.getElementsByTagName("ID");
    Element fils = (Element)nodes.item(0);
    CharacterData nomCData = (CharacterData)fils.getFirstChild();
    String id = nomCData.getData();

    Merci de votre aide ... J'ai beau lire et relire les tutos je suis perdue !
    J'ai bien vu comment lire la valeur de l'attribut (nb=1 ou nb=2) mais pas récupérer la valeur en fonction de l'attribut !!!

  2. #2
    Expert éminent

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Points : 8 107
    Points
    8 107
    Par défaut
    Bonjour,

    Si j'ai bien compris ton soucis, tu veux pouvoir récupérer la valeur des LIGNE contenues dans ton ADRESSE.

    Voici quelques éléments de réponse qui pourront t'aider :

    Tout d'abord 2 liens vers la JavaDoc sur Node et NodeList qui sont utiles pour démarrer.

    Pour récupérer le contenu de tes lignes dans Adresse, il faut d'abord trouver le nœud Adresse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NodeList nodes = racine.getElementsByTagName("ADRESSE");
    Ensuite tu récupère le premier nœud ADRESSE (dans ton exemple, tu n'en as qu'un seul mais si tu en as plusieurs, il suffit de faire une boucle for)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Node adresse = nodes.item(0);
    Ensuite tu as la méthode getChildNodes() pour obtenir tous les noeuds enfants, donc toutes les lignes de ton adresse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NodeList lignes = adresse.getChildNodes();
    Il te suffit ensuite de faire une boucle for pour récupérer toutes les lignes de ton adresse, grâce notamment à getLenth(), et de faire le traitement que tu souhaites.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     for (int i=0;i<lignes.getLength();i++){
    	Node fils = lignes.item(i);
    	//puis ton traitement... 
     
    	//Ou alors :
    	//Element fils = (Element)lignes.item(i);
    	//Et tu reprends la suite de ton traitement que tu faisais avec ID
    }
    EDIT :

    Tu as de plus la méthode getNodeValue() qui te renvoie directement la valeur du nœud en String.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Points : 69
    Points
    69
    Par défaut
    Merci,
    désolée j étais sur autre chose donc j'avais pas vu que tu m'avais répondu !
    Je vais essayer ça ...
    Je te tiens au courant !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Points : 69
    Points
    69
    Par défaut
    Ca marche ...
    Merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Paramètre ayant une valeur différente dans un état
    Par lozeba dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 26/04/2010, 15h34
  2. [Doctrine] Update d'un champ ayant une valeur par défaut
    Par louveteau02 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/03/2010, 12h51
  3. question XPath (récupérer un noeud qui a une valeur)
    Par adaneels dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 31/03/2009, 13h05
  4. Réponses: 3
    Dernier message: 26/03/2008, 19h47
  5. Réponses: 2
    Dernier message: 05/12/2007, 23h16

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