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 :

parser fichier xml avec JDOM [JDOM]


Sujet :

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

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut parser fichier xml avec JDOM
    Salut tous le monde,

    je veux parser un ficher xml existant en utilisant JDOM, j'ai suivant la documentation de dev.vom "Manipuler des données XML avec Java et JDOM", j'ai essayé de faire la partie 3: 3. Parcourir un fichier XML .

    j'ai mis le code suivant :
    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
    45
    46
    47
    48
    49
    50
    import java.io.*;
    import org.jdom.*;
    import org.jdom.input.*;
    import org.jdom.filter.*;
    import java.util.List;
    import java.util.Iterator;
     
    public class test
    {
       static org.jdom.Document document;
       static Element racine;
     
     
     //Ajouter cette méthodes à la classe JDOM2
       static void afficheALL()
       {
          //On crée une List contenant tous les noeuds "etudiant" de l'Element racine
          List listEtudiants = racine.getChildren("etudiant");
     
          //On crée un Iterator sur notre liste
          Iterator i = listEtudiants.iterator();
          while(i.hasNext())
          {
             //On recrée l'Element courant à chaque tour de boucle afin de
             //pouvoir utiliser les méthodes propres aux Element comme :
             //selectionner un noeud fils, modifier du texte, etc...
             Element courant = (Element)i.next();
             //On affiche le nom de l'element courant
             System.out.println(courant.getChild("nom").getText());
          }
       }
       public static void main(String[] args)
       {
          //On crée une instance de SAXBuilder
          SAXBuilder sxb = new SAXBuilder();
          try
          {
             //On crée un nouveau document JDOM avec en argument le fichier XML
             //Le parsing est terminé ;)
             document = sxb.build(new File("Exercice2.xml"));
          }
          catch(Exception e){}
     
          //On initialise un nouvel élément racine avec l'élément racine du document.
          racine = document.getRootElement();
     
          //Méthode définie dans la partie 3.2. de cet article
          afficheALL();
       }
    }

    mais j'obtiens l'erreur suivantes :

    *Exception in thread "main" java.lang.NullPointerException
    at test.main(test.java:45)

    *Et si 'enlève la ligne 45 j'obtiens l'erreur suivantes :

    Exception in thread "main" java.lang.NullPointerException
    at test.afficheALL(test.java:18)
    at test.main(test.java:48)

    Merci à l'avance pour votre aides, j'utilise comme IDE Eclipse et java 1.5

  2. #2
    Membre éclairé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Par défaut
    Salut,

    Elles sont où tes lignes 45, 48 et 18 ?
    Tu peux mettre la balise code pour encadrer ton code STP ?

    A priori je dirais que ceci "racine = document.getRootElement();" est ta ligne 45, donc que document est null au moment ou tu veux récupérer sa racine, donc que Exercice2.xml n'est pas là où tu essaies de l'ouvrir, ou alors pas avec ce nom la (case sensitive).

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut le méme probléme
    salut,

    j'ai changé le nom de mon fichier xml (test.xml) et ma classe java Test.java mais
    le méme erreur existe aussi.

    voila le code :
    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
    45
    46
    47
    48
    49
    package salem;
     
    import java.io.*;
    import org.jdom.*;
    import org.jdom.input.*;
    import org.jdom.filter.*;
    import java.util.List;
    import java.util.Iterator;
     
    public class Test {
    	static org.jdom.Document document;
    	static Element racine;
     
    	// Ajouter cette méthodes à la classe JDOM2
    	static void afficheALL() {
    		// On crée une List contenant tous les noeuds "etudiant" de l'Element
    		// racine
    		List listEtudiants = racine.getChildren("etudiant");
     
    		// On crée un Iterator sur notre liste
    		Iterator i = listEtudiants.iterator();
    		while (i.hasNext()) {
    			// On recrée l'Element courant à chaque tour de boucle afin de
    			// pouvoir utiliser les méthodes propres aux Element comme :
    			// selectionner un noeud fils, modifier du texte, etc...
    			Element courant = (Element) i.next();
    			// On affiche le nom de l'element courant
    			System.out.println(courant.getChild("nom").getText());
    		}
    	}
     
    	public static void main(String[] args) {
    		// On crée une instance de SAXBuilder
    		SAXBuilder sxb = new SAXBuilder();
    		try {
    			// On crée un nouveau document JDOM avec en argument le fichier XML
    			// Le parsing est terminé ;)
    			document = sxb.build(new File("test.xml"));
    		} catch (Exception e) {
    		}
     
    		// On initialise un nouvel élément racine avec l'élément racine du
    		// document.
    		racine = document.getRootElement();
     
    		// Méthode définie dans la partie 3.2. de cet article
    		afficheALL();
    	}
    }
    la méme erruer :

    Exception in thread "main" java.lang.NullPointerException
    at salem.Test.main(Test.java:44)
    instruction : racine = document.getRootElement();

    est ce que j'ai fait des erreurs: j'ai copié le même code existé dans le cour, et j'ai mit Test.java et test.xml dans le même package (seulement j'ai ajouté un nouveaux fichier test.xml à ce package) dans un nouveaux projet.
    Merci pour votre aide.

  4. #4
    Membre émérite Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    Citation Envoyé par logarsalem
    document = sxb.build(new File("test.xml"));
    cela voudrais dire que ton fichier test.xml est dans le même répertoire que ton .classpath, .project , ton dossier src , bin ....

    et non pas dans ton dossier src comme tu le dis
    Citation Envoyé par logarsalem
    et j'ai mit Test.java et test.xml dans le même package
    c'est donc normal qu il ne trouve pas le fichier en question
    voila

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut Probléme résolue
    Merci bien pour votre aides maintenant le problème est résolue , j'ai mit mon fichier test.xml dans le même répertoire que mon .classpath et ça marche bien maintenant.

    Je vous re-merci infiniment

  6. #6
    Membre émérite Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    de rien c'était pas grand chose

    ++

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

Discussions similaires

  1. [JDOM] Parser un fichier XML avec JDOM
    Par onsanaisou dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 11/06/2014, 10h46
  2. [JDOM] Génération d'un fichier XML avec JDOM
    Par demcoul dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 27/11/2008, 13h50
  3. [JDOM] enregistrer un fichier XML avec JDOM
    Par fatenatwork dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 28/09/2007, 10h42
  4. [JDOM] Création d'un fichier xml avec jdom
    Par fabricew59 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 09/08/2006, 11h17
  5. [DOM] Erreur parser fichier xml avec caractère spéciaux
    Par turcotm dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 19/06/2006, 09h01

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