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 :

lecture fichier XML avec DOM [DOM]


Sujet :

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

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut lecture fichier XML avec DOM
    Bonjour à tous,
    Je veux faire la lecture d'un fichier XML au moyen de DOM,voici le code de la fonction lecture:

    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
    51
    52
    53
    54
    55
    56
    57
     public String lecture(String nomfich) 
    	{int n=0;        
    	String result="";   
    	InputStream stream = null;
     
     
       try{
       DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
       fabrique.setValidating(true);
     
       DocumentBuilder constructeur = fabrique.newDocumentBuilder();
     
                File xml = new File(nomfich);
                Document document = constructeur.parse(xml);
                 Element racine = document.getDocumentElement();
     
    		//parcour  du fichier xml
    	NodeList list= racine.getChildNodes();
    	NodeList list1;
                 NodeList list2;
    	Element elem;
    	if (list.getLength()!=0)
    	{
    		for (int i=0;i<list.getLength();i++)
    		{		
    			elem= (Element)list.item(i);	
    			list1=elem.getChildNodes();
     
    			if (list1.getLength()!=0)
    			{
                                for (int j=0;j<list.getLength();j++)
    				{
    			Element element1=(Element) list1.item(j);
                                            list2=element1.getChildNodes();
     
                                            if (list2.getLength()!=0)
                                               {
                                                   for (int k=0;k<list2.getLength();k++)
                                                    {
                                                   Element element2=(Element) list2.item(k); 
     
                                                   Affichage( element2.getNodeValue() + " ");
                                                    result=element2.getNodeValue();
                                                   }
                                            }
     
    					 Affichage( "\n ");
    				}
    			}
                            }
     
     
    	}
     
                }catch (Exception ep){System.out.println("errrrrrrreur!!!!!!!"+ ep);}
    		return result;
    	}
    Pour la compilation il ne donne pas d'erreur mais en exécution il ne fonctionne pas et m'affiche:
    errrrrrrreur!!!!!!!
    java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.DeferredTextImpl cannot be cast to org.w3c.dom.Element
    SVP,J'attend votre aide.

  2. #2
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Est ce que tu peux nous donner la ligne qui est associée à cette erreur?
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Je crois...
    Citation Envoyé par guigui5931 Voir le message
    Est ce que tu peux nous donner la ligne qui est associée à cette erreur?
    Je crois que le problème est dans la racine car quand je fait :
    System.out.print(racine); après la ligne de:
    Element racine = document.getDocumentElement();

    il affiche:[???: null]

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    J'ai ajouté une classe gestionnaire d'erreurs comme celle indiquée dans FAQ JavaXML,et j'ai refait l'execution ,il affiche :

    *** Erreur ***
    Message : Document root element "DOCUMENT", must match DOCTYPE root "null".
    Ligne 1, colonne 49
    Public id : null

    *** Erreur ***
    Message : Document is invalid: no grammar found.
    Ligne 1, colonne 49
    Public id : null
    [DOCUMENT: null]errrrrrrreur!!!!!!!java.lang.NullPointerException
    BUILD SUCCESSFUL (total time: 2 minutes 15 seconds)

    Notons que j'ai réussit de faire la lecture de ce même fichierXML avec Jdom sans problème mais cette fois je voudrais la faireavec Dom.

    Aidez moi SVP

  5. #5
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    Roosse a tu regarder les FAQS, sources, et tutoriels ??
    c'est ce que j'ai fait et je n'ai aucun pb pour lire un fichier XML ou encore en créer un ....

    REMEMBER : FAQS, sources, et tutoriels ...

    Bon apres si tu y arrive vraiment pas je te filerai du code
    ... un flash ... et ça repart

    700R ... catch me if u can

    Best regards,
    .

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    QUOTE=laurentibus;3125930]Roosse a tu regarder les FAQS, sources, et tutoriels ??
    c'est ce que j'ai fait et je n'ai aucun pb pour lire un fichier XML ou encore en créer un ....

    REMEMBER : FAQS, sources, et tutoriels ...

    Bon apres si tu y arrive vraiment pas je te filerai du code [/QUOTE]

    Je n'est écrit le msg qu'après avoir examiner les FAQS ,
    et j'ai essayé de les suivre ,je veux juste que vous me dite ,si c'est possible, est ce qu'ilya une erreur dans le code ou s'ilya une autre méthode de lecture de fichier XML avec DOM.
    Merci d'avance.

  7. #7
    Membre expérimenté
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Points : 1 464
    Points
    1 464
    Par défaut
    Bonjour
    Je ne sais pas si c'est la seul erreur , mais deja l'erreur
    java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.DeferredTextImpl cannot be cast to org.w3c.dom.Element
    peut t'aider.

    En effet dan ston code tu caste les Node des NodeList en Element et a un moment le Node courant est un Text et pas un Element. Donc pour regler le probleme modifie ton code en testant le type du Node lorsque tu boucles sur de Node d'uen NodeList.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Node node = list.item(i); 
    if (node instanceof Element) {
    elem= (Element)node;
    ... 
    }
    elem= (Element)list.item(i);

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par azerr Voir le message
    Bonjour
    Je ne sais pas si c'est la seul erreur , mais deja l'erreur


    peut t'aider.

    En effet dan ston code tu caste les Node des NodeList en Element et a un moment le Node courant est un Text et pas un Element. Donc pour regler le probleme modifie ton code en testant le type du Node lorsque tu boucles sur de Node d'uen NodeList.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Node node = list.item(i); 
    if (node instanceof Element) {
    elem= (Element)node;
    ... 
    }
    elem= (Element)list.item(i);
    Merci,je vais essayer.

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Enfin j'ai trouvé l'astuce
    Une petite bétise qui m'a consommée trop de temps.
    Il manque une boucle for dans lecture pour qu'elle fonctionne ...
    Voici le nouveau 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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
      public String lecture(String nomfich) 
    	{int n=0;
     
    	String result = null;
     
           	Document doc; 
    	try{
     
               DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();
     
            DocumentBuilder builder = factory.newDocumentBuilder();
     
              Document document = builder.parse(new File(nomfich));
                //le fichier contient balises<Document>,<Parag>,<Phrase>et<mot>
                Element racine = document.getDocumentElement();
            	Node Texte=racine;	
    	NodeList list=Texte.getChildNodes();
    	NodeList list1;
                 NodeList list2;
                 NodeList list3;
    	Node elem;
    	if (list.getLength()!=0)
    	{
    		for (int i=0;i<list.getLength();i++)
    		{		
    			elem= list.item(i);	
    			list1=elem.getChildNodes();
    			if (list1.getLength()!=0)
    			{
                                for (int j=0;j<list1.getLength();j++)
    		{
    			Node element1= list1.item(j);
                                            list2=element1.getChildNodes();
     
                                            if (list2.getLength()!=0)
                                               {
                                                   for (int k=0;k<list2.getLength();k++)
                                                    {
                                                    Node element2= list2.item(k);
                                                    list3=element2.getChildNodes();
                                                    if (list3.getLength()!=0)
                                                     for (int z=0;z<list3.getLength();z++)
                                                     {
                          Node element3= list3.item(z);                                           Affichage( element3.getNodeValue() + " ");
                                                            result=element3.getNodeValue();
                                                             n=n+1;
     
                                                     }
                                                   }
                                            }
     
    					 Affichage( "\n ");
    				}
    			}
    		}
                    System.out.print("n="+n);
    // n est le nombre de mots dans le fichier
     
     
    	}
     
                }catch (Exception ep){System.out.println("errrrrrrreur!!!!!!!"+ ep);}
    		return result;
    	}

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

Discussions similaires

  1. Exemple de lecture d'un fichier XML avec DOM
    Par Ioan dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 08/03/2011, 18h48
  2. parser un fichier xml avec dom
    Par cilies38 dans le forum Modules
    Réponses: 2
    Dernier message: 04/03/2007, 21h12
  3. [DOM] Php5 : créer un fichier xml avec Dom
    Par devadh dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 29/01/2007, 14h04
  4. [DOM] Comment generer ce fichier XML avec DOM ?
    Par jlassira dans le forum Format d'échange (XML, JSON...)
    Réponses: 18
    Dernier message: 10/04/2006, 09h12
  5. [DOM] [Débutant(e)] Modifier un fichier XML avec DOM
    Par macks dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 05/07/2005, 14h13

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