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 :

Lire un fichier simple XML en Java [DOM]


Sujet :

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

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Lire un fichier simple XML en Java
    Bonjour j'essayer de lire un fichier simple XML avec Dom en Java.
    Voici mon fichier XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <folder_creation_tbo>
    	<hut_dos_com_piece>
    		<folder name="Commercial" type="hut_pie_commercial" path="/"/>
    		<folder name="Prototypes and EI" type="hut_pie_proto_ei" path="/"/>
    		<folder name="Conditionnement" type="hut_pie_conditionnement" path="/"/>
    		<folder name="Laboratory Technic" type="hut_pie_labo_tech" path="/"/>
    	</hut_dos_com_piece>
    	<hut_dossier_client>
    		<folder name="Contracts" type="hut_cli_contrats" path="/"/>
    	</hut_dossier_client>
    </folder_creation_tbo>
    Voici mon fichier java :
    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
     
    Document document;
    String xml_file="fichier.xml";
    String nom_type="hut_dos_com_piece";
     
    try{
    	DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
    	DocumentBuilder constructeur = fabrique.newDocumentBuilder();
    	File xml = new File(xml_file);
    	document = constructeur.parse(xml);
    }catch(ParserConfigurationException pce){
    	System.out.println("Erreur de configuration du parseur DOM");
    	System.out.println("lors de l'appel à fabrique.newDocumentBuilder();");
    }catch(SAXException se){
    	System.out.println("Erreur lors du parsing du document");
    	System.out.println("lors de l'appel à construteur.parse(xml)");
    }catch(IOException ioe){
    	System.out.println("Erreur d'entrée/sortie");
    	System.out.println("lors de l'appel à construteur.parse(xml)");
    }
     
    String tab[] = new String[3];
    ArrayList result = new ArrayList();
     
    Element racine = document.getDocumentElement();
    NodeList liste_type = racine.getChildNodes();
    for(int i=0; i<liste_type.getLength(); i++){
    	if(liste_type.item(i).getNodeName().equals(nom_type)){
    		NodeList liste_folders = liste_type.item(i).getChildNodes();
    		for(int j=0; j<liste_folders.getLength(); j++){
    			Element folder = (Element)liste_folders.item(j);
    			tab[0]=folder.getAttribute("name");
    			tab[1]=folder.getAttribute("path");
    			tab[2]=folder.getAttribute("type");
    			System.out.println(tab[0]+" "+tab[1]+" "+tab[2]);
    			result.add(j, tab);
    		}
    	}
    }
    En gros, j'envois a ma fonction le type (ici : hut_dos_com_piece)
    et je veux récuperer un ArrayList de tous les élements avec les attributs
    (ici élement folder avec attributs name, type et path).

    Mon programme se plante sur la conversion du Node en Element :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Element folder = (Element)liste_folders.item(j);
    J'obtiens un problème de CastException...

    Je n'arrive pas à trouver comment lire simplement ce petit bout de XML...
    C'est quand même pas si compliqué que ca ?

    Merci pour vos réponses.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Salut,
    Es tu sûr d'avoir bien utilisé la classe org.w3c.dom.Element? Peut être que tu utilises une autre classe qui s'appelle Element aussi, vérifie tes import.

  3. #3
    Membre habitué Avatar de Xavinou
    Inscrit en
    Mai 2005
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 135
    Points : 156
    Points
    156
    Par défaut
    Les fils de ton noeud ne sont pas tous des éléments, il doit y avoir des noeuds texte (correspondants aux sauts de ligne).

    Pour filtrer les noeuds élément, utilise l'opérateur instanceof :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (node instanceof Element) {
        ....
    }

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    La classe Element était bien la bonne.

    Merci Xavinou, l'erreur venait bien du fait qu'il y avait des saut de lignes ou qq chose comme ca.

    Avec le test d'instance d'Element, ca fonctionne tres bien !
    Merci beaucoup.

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

Discussions similaires

  1. Impossible de lire le fichier persistence.xml
    Par saveriu dans le forum JPA
    Réponses: 3
    Dernier message: 08/04/2009, 09h34
  2. lire un fichier avec xml
    Par sorilazer dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 15/04/2007, 20h59
  3. lire un fichier binaire écrit en java
    Par alex'l dans le forum C++
    Réponses: 13
    Dernier message: 31/01/2007, 21h47
  4. [XML] lire un fichier en xml et enregistrer les donnees dans MySQL
    Par nath-0-0 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 22/08/2006, 14h06
  5. Lire/Ecrire dans un fichier .xml depuis Java
    Par SkyBioSS dans le forum Format d'échange (XML, JSON...)
    Réponses: 13
    Dernier message: 16/05/2006, 17h38

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