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 :

probléme de Parsing [JDOM]


Sujet :

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

  1. #1
    Membre habitué
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Par défaut probléme de Parsing
    Bonjour

    J'ai un souci avec mon programme :

    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
     
    import java.io.*;
    import org.jdom.*;
    import org.jdom.input.*;
    import org.jdom.filter.*;
    import java.util.List;
    import java.util.Iterator;
    /**
     *
     *
     */
    public class parser1 {
     
        public static void listChildren(Element current, int depth) {
     
            List children = current.getChildren();
            Iterator iterator = children.iterator();
            while (iterator.hasNext()) {
                Element child = (Element)iterator.next();
                System.out.println(child.getChild("title").getText());
            }
     
        }
     
        public static void main(String[] args) {
     
            SAXBuilder builder = new SAXBuilder();
     
            try {
                Document doc = builder.build("fichier.xml");
                Element root = doc.getRootElement();
     
            }
            // indicates a well-formedness error
            catch (JDOMException e) {
                System.out.println("Essai.xml is not well-formed.");
                System.out.println(e.getMessage());
            }
            catch (IOException e) {
                System.out.println(e);
            }
    }}
    Je veux chercher le résultat dans la balise title.Il me renvoie aucune erreur mais ne m'affiche rien.(ce que je veut obtenir en rouge).

    Le code source
    Code XML : 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
     <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
        <!--  @meta@--> 
          <meta name="keywords" content="OMIM, Online Mendelian Inheritance in 
          <meta name="robots" content="index,nofollow,NOARCHIVE" /> 
          <meta name="ncbi_app" content="entrez" /> 
          <meta name="ncbi_db" content="omim" /> 
          <meta name="ncbi_term" content="gpcr-168" /> 
          <meta name="ncbi_resultcount" content="0" /> 
          <meta name="ncbi_op" content="search" /> 
          <meta name="ncbi_pdid" content="emptyresult" /> 
          <meta name="ncbi_sessionid" content="396A0F3DB8542F01_0135SID" /> 
          <meta name="ncbi_stat" content="false" /> 
          <meta name="ncbi_hitstat" content="false" /> 
          <!--  @title@  --> 
          <title>No items found - OMIM Results  </title> 
     <!--  Common JS and CSS 
      --> 
      <script type="text/javascript">var ncbi_startTime = new Date();</script> 
      <link type="text/css" rel="stylesheet" href="/portal/css/ncbi_test.css" /> 
     <script type="text/javascript">

    merci d'avance.

  2. #2
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Peux-tu mettre les balises CODE? C'est plus lisible.

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Bonjour,

    Dans un premier temps, il faut appeler la méthode 'listChildren' et regarder ce qui se passe, pour l'instant elle n'est jamais appelée donc ne s'exécute pas.

  4. #4
    Membre habitué
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Par défaut
    pourrait tu préciser un peu stp

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Dans le code source que tu fournis, il y a une méthode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // le paramètre depth n'est pour l'instant jamais utilisé -> à voir
    public static void listChildren(Element current, int depth)
    qui va chercher les éléments 'title'.

    Cette méthode semble ne jamais être appelée donc jamais exécutée.
    Je n'ai pas regardé si son contenu est correcte, mais il faut au minimum faire dans la méthode main:

    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
     
    public static void main(String[] args) {
    	SAXBuilder builder = new SAXBuilder();
    	try {
    		Document doc = builder.build("fichier.xml");
    		Element root = doc.getRootElement();
    		listChildren(root, 0); // à ajouter
    	}
    	// indicates a well-formedness error
    	catch (JDOMException e) {
    		System.out.println("Essai.xml is not well-formed.");
    		System.out.println(e.getMessage());
    	}
    	catch (IOException e) {
    		System.out.println(e);
    	}
    }

  6. #6
    Membre habitué
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Par défaut
    Oui désolé j'ai oublié de le mettre. merci

    par contre maintenant il me met un null pointer

    Exception in thread "main" java.lang.NullPointerException
    at parser1.listChildren(parser1.java:21)
    at parser1.main(parser1.java:33)

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    OK.

    Il y a donc quelque chose de null à la ligne 21 de parser1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println(child.getChild("title").getText());
    Sur cette ligne, le déclenchement de l'exception peut se faire uniquement lorsque:
    child.getChild("title") est null.

    Donc la méthode getChild retourne null.

  8. #8
    Membre habitué
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Par défaut
    ce qui est pas normal car dans la balise title il y l'info que je recherche donc il devrait me l'afficher?

  9. #9
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Citation Envoyé par Rev0n Voir le message
    ce qui est pas normal car dans la balise title il y l'info que je recherche donc il devrait me l'afficher?
    Le problème vient en fait , je pense de la balise html:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    En effet, dans ce cas tu définis que ton fichier est dans un namespace particulier, du coup:
    Soit tu enlèves le xmlns="...."
    Soit tu traites la notion de namespace dans le source du parseur.

    Si tu veux des explications plus précises, je te conseille la FAQ ou autre, il doit y avoir du code précis qui t'explique cela!

  10. #10
    Membre habitué
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Par défaut
    merci eric pour tes conseils ça a fini par marcher.

    je met mon 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
    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 parser1 {
     
     
     
           static org.jdom.Document document;
           static Element racine;
     
           public static void main(String[] args)
           {try
              {
               //On défini le nameSpace
               //Ne pas oublier de rajouter la variable dans chaque champ
                Namespace nameSpace = Namespace.getNamespace("html", "http://www.w3.org/1999/xhtml");
                SAXBuilder sxb = new SAXBuilder();
     
     
     
              //On crée une instance de SAXBuilder
     
             //On crée un nouveau document JDOM avec en argument le fichier XML
     
                 document = sxb.build(new File("fichier.xml"));
     
     
              //On initialise un nouvel élément racine avec l'élément racine du document.
     
              racine = document.getRootElement();
     
     
     
       //On crée une List contenant tous les noeuds "head" de l'Element racine
       List listEtudiants = racine.getChildren("head",nameSpace);
     
       //On crée un Iterator sur notre liste
       Iterator i = listEtudiants.iterator();
       while(i.hasNext())
       {
          Element courant = (Element)i.next();
          //On affiche le nom de l'element courant
          System.out.println(courant.getChild("title",nameSpace).getText());
       }  }
              catch(Exception e){}
    Par contre j'ai toujours un petit souci, normal XD
    je pence que la deuxiéme ligne du code source fait buguer mon programme
    faut 'il que je la supprime ou y a t'il moyen de faire autrement.

    code source

    Code xml : 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
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <!-- @meta@ -->
        <meta name="keywords" content="OMIM, Online Mendelian Inheritance in Man,         genetic disorder, gene catalog, McKusick, Johns Hopkins, NCBI, National         Center for Biotechnology Information, clinical synopsis, allelic variants,         morbid map, phenotype, disease, animal models, molecular genetics, gene         structure and function, evolution" /><meta name="description" content="OMIM, Online Mendelian Inheritance in Man,         a database of human genes and genetic disorders developed by staff at Johns         Hopkins and hosted on the Web by NCBI." /><meta name="robots" content="index,nofollow,NOARCHIVE" />
    <meta name="ncbi_app" content="entrez" /><meta name="ncbi_db" content="omim" /><meta name="ncbi_term" content="gpcr-168" /><meta name="ncbi_resultcount" content="0" /><meta name="ncbi_op" content="search" /><meta name="ncbi_pdid" content="emptyresult" /><meta name="ncbi_sessionid" content="CE884AC2B863E091_0081SID" /><meta name="ncbi_stat" content="false" /><meta name="ncbi_hitstat" content="false" />
    
    
        <!-- @title@ -->
        <title>
          No items found - 
          
          OMIM
          
           Results
        </title>
        <!-- Common JS and CSS -->
        
                <script type="text/javascript">
                    var ncbi_startTime = new Date();
                </script>
                
                <link type="text/css" rel="stylesheet" href="/portal/css/ncbi_test.css" />      
                
                <script type="text/javascript">
                <!--
                var PopUpMenu2_GlobalConfig = [
                  ["UseThisGlobalConfig","yes"]
                ]
                //-->
                </script>
                <script type="text/javascript" src="/coreweb/javascript/popupmenu2/popupmenu2_7loader.js"></script>
            
                    <script type="text/javascript" src="/core/jig/1.2.2/js/jig.min.js"></script>

  11. #11
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    T'en mieux si tu avances.
    Je pence que la deuxiéme ligne du code source fait buguer mon programme
    Je n'ai pas regardé ton problème, mais tu devrais dire ce qui "buggue", tu as un message d'erreur?

  12. #12
    Membre habitué
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Par défaut
    Il me met :

    Exception in thread "main" java.lang.NullPointerException
    at parser1.main(parser1.java:35)
    Et quand je retire la ligne que j'ai souligner en rouge ,le programme marche

  13. #13
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Tu as un NullPointer? T'es sur?
    Je ne vois pas trop pourquoi.
    Qu'est ce qu'il y a ligne 35 dans ton code?

  14. #14
    Membre habitué
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Par défaut
    A la ligne 35 il y a

    racine = document.getRootElement();

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    mais la ligne de dessus en est la cause,pourquoi je ne c'est pas, car quand j'ouvre mon fichier avec notpad++ et que je la supprime ça marche.

    Mais j'ai trouvé une solution un peu bourrin certe mais qui marche.
    Comme j'ai un autre programme java qui me créer le fichier avec le code source je lui simplement dit de supprimer cette ligne.

    Par contre si il y a d'autres solutions moins sauvages je suis preneur.

  15. #15
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Si le message que tu as donné concernant NullPointer est complet, j'ai l'impression que c'est la variable "document" et que le vrai plantage est avant dans le code java.
    (Même si comme tu l'as dit, la ligne que tu as supprimé du XML est la bonne raison).

  16. #16
    Membre habitué
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Par défaut
    Oui je viens de refaire un essai
    et j'obtiens bien comme erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exception in thread "main" java.lang.NullPointerException
    	at parser1.main(parser1.java:35)
    et la ligne 35:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    racine = document.getRootElement()
    Après il est possible que j'ai une erreur, mais je ne serai dire laquelle.

  17. #17
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    OK, donc la variable document a la valeur null quand elle arrive la:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    racine = document.getRootElement()

  18. #18
    Membre habitué
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Par défaut
    Oui et je pense que la ligne de tout à l'heure en est l'origine, le programme ne doit pas la reconnaître comme du format xml. Après je suis pas sur de ce que j'avance.

  19. #19
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    J'ai oublié la moitié de mon message précédent, je voulais dire que:

    vu que "document" est null à cet endroit là, c'est donc lorsque "document" est instancié qu'il y a un problème.

  20. #20
    Membre habitué
    Inscrit en
    Février 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 13
    Par défaut
    J'ai cherché et j'ai pas trouvé pourquoi donc je reste avec mon système D

    En tout cas merci à toi pour ton aide

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [DOM] Problème de parsing avec DomParser
    Par iam_free dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 21/04/2006, 09h33
  2. [DOM] [DocumentBuilder] Problème de parsing de fichier
    Par tck-lt dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 13/04/2006, 17h18
  3. [Tableaux] problème de parse error
    Par Invité dans le forum Langage
    Réponses: 6
    Dernier message: 06/04/2006, 21h37
  4. [JDOM] Problème de Parsing JDOM
    Par RapidJul dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 06/10/2005, 12h09
  5. [SAX] Problème de parsing ?
    Par Regis.C dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 22/06/2005, 21h48

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