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 :

Probleme de recuperation de valeur [DOM]


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut Probleme de recuperation de valeur
    Bonjour à tous,

    en fait je voudrais recuperer des valeurs dans un xml qui est constitué comme suit :

    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
     
     
    <NORMES>
       <norme>
          <id></id>
          <detail>
             <element 1></element 1>
             <element 2></element 2>
          </detail>
       </norme>
       <norme>
          <id></id>
          <detail>
             <element 1></element 1>
             <element 2></element 2>
          </detail>
       </norme>
    </NORMES>
    en fait je voudrais recuperer les enfants de chaque "<norme>", donc je procede comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    root = (Element)doc.getDocumentElement();
    normes= root.getElementsByTagName("norme");
     
    for(int cpt=0; cpt < normes.getLength(); cpt++){
     node= (Element)normes.item(cpt);
     
            Element element = (Element)node.getElementsByTagName("id").item(0);
            String valeur = element.getFirstChild().getNodeValue();
     
    }
    je recupere bien la valeur du noeud "id" au premier passage dans la boucle et ensuite j'ai un plantage avec un "java.lang.NullPointerException"

    Quelqu'un pourrait m'aider svp ?

  2. #2
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    C'est normal ca : pas de s à norme ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    normes= root.getElementsByTagName("norme");

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    oui parce que je veux recuperer les noeuds <norme/>

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Par défaut
    tu dois boucler sur ton noeud "NORMES" et non sur le "NORME", je pense qu'en bouclant sur ton noeud root ca devrait passer

    +++
    vandoor

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    J'ai testé le code suivant et j'ai toujours la meme erreur

    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
     
     
    root = (Element)doc.getDocumentElement();
    normes= root.getElementsByTagName("NORMES");
     
    for(int cpt=0; cpt < normes.getLength(); cpt++){
            node= (Element)normes.item(cpt);
     
            NodeList norme= node.getElementsByTagName("norme");
     
            for(int cpt2=0; cpt2 < norme.getLength(); cpt2++){
              node= (Element)norme.item(cpt2);
              NodeList id= node.getElementsByTagName("id");
              Element nodeId = (Element)id.item(0);
              System.out.print(nodeIdBroma.getFirstChild().getNodeValue());
            }
    }

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Par défaut
    et si tu essaies

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    root = (Element)doc.getDocumentElement();
     
    for(int cpt=0; cpt < root.getLength(); cpt++){
            node= (Element)root.item(cpt);
     
            NodeList norme= node.getElementsByTagName("norme");
     
            for(int cpt2=0; cpt2 < norme.getLength(); cpt2++){
              node= (Element)norme.item(cpt2);
              NodeList id= node.getElementsByTagName("id");
              Element nodeId = (Element)id.item(0);
              System.out.print(nodeIdBroma.getFirstChild().getNodeValue());
            }
    }

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    ça ne marche pas car root n'est pas un NodeList donc on ne peux meme pas boucler dessus

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    personne n'a une idee ?

  9. #9
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    import java.io.IOException;
     
    import org.apache.xerces.parsers.DOMParser;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;
     
     
    public class Test{
    	public static void main(String[] argv){
     
            // Create a DOM Parser
            DOMParser parser = new DOMParser();
            try{
            // Parser the incoming file (URL)
            	parser.parse("test.xml");
            }catch(IOException ioe){
            	ioe.printStackTrace();
            }catch(SAXException se){
            	se.printStackTrace();
            }
            // Obtain the document
            Document doc = parser.getDocument();
     
    		Element root = (Element)doc.getDocumentElement();
    		NodeList normes= root.getElementsByTagName("norme");
     
    		for(int cpt=0; cpt < normes.getLength(); cpt++){
    		 Element node= (Element)normes.item(cpt);	     
    		 Element element = (Element)node.getElementsByTagName("id").item(0);
    		 String valeur = element.getFirstChild().getNodeValue();
    		 System.out.println("valeur id="+valeur);
    		}
    	}
    }
    avec comme xml
    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
    27
    28
    29
    30
    31
    32
     
     
    <NORMES>
       <norme>
          <id>1</id>
          <detail>
             <element>1_1</element>
             <element>1_2</element>
          </detail>
       </norme>
       <norme>
          <id>2</id>
          <detail>
             <element>2_1</element>
             <element>2_2</element>
          </detail>
       </norme>
       <norme>
          <id>3</id>
          <detail>
             <element>3_1</element>
             <element>3_2</element>
          </detail>
       </norme>
       <norme>
          <id>4</id>
          <detail>
             <element>4_1</element>
             <element>4_2</element>
          </detail>
       </norme>   
    </NORMES>
    et j'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    valeur id=1
    valeur id=2
    valeur id=3
    valeur id=4

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    ton code marche au premier passage dans la boucle et ensuite j'ai la meme erreur qu'avant.
    Et mon xml ressemble a ça :


    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
     
    <NORMES>
       <norme>
          <id>1</id>
          <detail>
             <element>1_1</element>
             <element>1_2</element>
          </detail>
          <detail>
             <element>1_1</element>
             <element>1_2</element>
          </detail>
          <detail>
             <element>1_1</element>
             <element>1_2</element>
          </detail>
       </norme>
       <norme>
          <id>2</id>
          <detail>
             <element>2_1</element>
             <element>2_2</element>
          </detail>
          <detail>
             <element>1_1</element>
             <element>1_2</element>
          </detail>
       </norme>
       <norme>
          <id>3</id>
          <detail>
             <element>3_1</element>
             <element>3_2</element>
          </detail>
       </norme>
       <norme>
          <id>4</id>
          <detail>
             <element>4_1</element>
             <element>4_2</element>
          </detail>
       </norme>   
    </NORMES>

  11. #11
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Premier passage ?
    Désolé mais j'ai repris ton xml et il ne me crache aucune exception ???

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    Citation Envoyé par ze_key
    Premier passage ?
    Désolé mais j'ai repris ton xml et il ne me crache aucune exception ???
    je comprends pas non plus, au premier passage dans la boucle for il m'affiche bien la valeur et ensuite au deuxieme passage j'ai un "java.lang.NullPointerException"

  13. #13
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    reprenon les choses doucement
    Tu as pris mon code (sans changer les imports) et ton xml lors du second passage dans la boucle il te fait un NULL Pointer. Je suppose sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Element element = (Element)node.getElementsByTagName("id").item(0);
    quel jdk/système ?
    Sinon envoi moi le fichier .java et .class sur ze_key@hotmail.com

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    non je n'ai pas repris ton code entierement mais juste la partie ou il ya le for.

    Et c'est bien sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Element element = (Element)node.getElementsByTagName("id").item(0);
    qu'il me fait l'exception.

    Je bosse sur jBuilder avec la jdk 1.4.2_01-b06

  15. #15
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Tu pourrais essayé avec le code complet (histoire d'ecarter un probleme de lib mais bon j'en doute) et apres si ca marche regarder ce qui diffère

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    Citation Envoyé par ze_key
    Tu pourrais essayé avec le code complet (histoire d'ecarter un probleme de lib mais bon j'en doute) et apres si ca marche regarder ce qui diffère
    ok je teste ça apres manger et je te tiens au courant.
    Merci pour ton aide en tout cas

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    j'ai teste ton code et il marche aussi chez moi.

    Je pense que l'erreur viens du fait que je ne parse pas le xml avec la meme chose que toi .

    Voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
     
    doc = builder.parse(file);

  18. #18
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Chez moi ce code marche très bien:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
     
    import java.io.IOException;
     
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
     
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;
     
     
    public class Test{
    	public static void main(String[] argv){
     
        	Document doc=null;
            try{
    			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    			DocumentBuilder builder = factory.newDocumentBuilder();
    			doc = builder.parse("test.xml");         	  
            }catch(IOException ioe){
            	ioe.printStackTrace();
            }catch(SAXException se){
            	se.printStackTrace();
            }catch(ParserConfigurationException pe){
            	pe.printStackTrace();
            }
     
    		Element root = (Element)doc.getDocumentElement();
    		NodeList normes= root.getElementsByTagName("norme");
     
    		for(int cpt=0; cpt < normes.getLength(); cpt++){
    		 Element node= (Element)normes.item(cpt);	     
    		 Element element = (Element)node.getElementsByTagName("id").item(0);
    		 String valeur = element.getFirstChild().getNodeValue();
    		 System.out.println("valeur id="+valeur);
    		}
    	}
    }

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    et bien chez moi le code que tu viens de mettre plante aussi au deuxieme tour de boucle

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    bon je viens de trouver d'ou venait l'erreur. En fait mon xml complet ce compose ainsi :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    <NORMES>
       <norme>
          <id>1</id>
          <detail>
             <element>1_1</element>
             <element>1_2</element>
             <norme>1_1_1</norme>
          </detail>
       </norme>
       <norme>
          <id>2</id>
          <detail>
             <element>2_1</element>
             <element>2_2</element>
             <norme>1_1_1</norme>
          </detail>
       </norme>
       <norme>
          <id>3</id>
          <detail>
             <element>3_1</element>
             <element>3_2</element>
             <norme>1_1_1</norme>
          </detail>
       </norme>
       <norme>
          <id>4</id>
          <detail>
             <element>4_1</element>
             <element>4_2</element>
             <norme>1_1_1</norme>
          </detail>
       </norme>   
    </NORMES>
    Donc du coup l'erreur venait de la

    Merci a toi en tout cas pour ton aide.

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

Discussions similaires

  1. probleme checkbox recuperer les valeurs
    Par flomomo dans le forum Struts 2
    Réponses: 1
    Dernier message: 11/05/2014, 23h01
  2. [MySQL] Probleme avec recuperation des valeur d'un formulaire
    Par penguin50 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 02/04/2008, 10h56
  3. probleme:recuperer une valeur stockée dans une session
    Par oasma dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 26/03/2007, 00h38
  4. Réponses: 2
    Dernier message: 27/07/2006, 14h41
  5. probleme pour recuperer une valeur
    Par kespy13 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/04/2006, 10h18

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