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 :

Comment charger un fichier XML dans class


Sujet :

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

  1. #1
    Membre actif Avatar de Elwe31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 487
    Points : 220
    Points
    220
    Par défaut Comment charger un fichier XML dans class
    Bonjour à tous,

    J'ai 2 Class:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Cla{
        private int a;
        private String b;
     
        public Cla(){}
    les set et get...............
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class Clas{
        private List tab;
     
        public Clas(){
           tab = new ArrayList<Cla>();
         }
          les set et get..........
    }
    et un fichier XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <Clas>
      <Cla>
        <a>1</a>
        <b>toto</b>
      </Cla>
      <Cla>
        <a>2</a>
        <b>Tata</b>
      </Cla>
    </Clas>
    Ma question est : Comment on fait pour charger le fichier XML dans la class "Clas"???

    Merci d'avance.

  2. #2
    Membre averti Avatar de nicocsgamer
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 321
    Points : 342
    Points
    342
    Par défaut
    Castor ?

  3. #3
    Expert éminent

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Points : 8 107
    Points
    8 107
    Par défaut
    Bonjour,

    Pour charger ton fichier XML, tu dois utiliser un parser. Il en existe beaucoup en Java (Dom, JDom, Sax, ...), il te suffit d'en choisir un.
    Tu pourra trouver des tutoriels explicatifs sur leur utilisation ici : http://java.developpez.com/cours/?page=java-se-cat#xml

  4. #4
    Membre actif Avatar de Elwe31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 487
    Points : 220
    Points
    220
    Par défaut
    Merci beaucoup .

    J'ai trouvé ça : http://zedros.developpez.com/tutoriels/java/xml/xpath/
    ça fonctionne plutot bien sauf que je n'arrive pas a recuperer ce genre d'info.

    Fichier 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
     
    <Clas>
      <Cla>
        <a>1</a>
        <b>toto</b>
        <cs>
            <c>10</c>
            <c>25</c>
        </cs>
      </Cla>
      <Cla>
        <a>2</a>
        <b>Tata</b>
        <cs>
            <c>24</c>
            <c>51</c>
        </cs>
      </Cla>
    </Clas>
    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
     
    ..........
    String fileName = "C:/test.xml";
    		SAXBuilder sxb = new SAXBuilder();
    		ArrayList<Unite> l = new ArrayList<Unite>();
    		try {
    			org.jdom.Document document = sxb.build(new File(fileName));
    			Element racine = document.getRootElement();
     
    			XPath xpa = XPath.newInstance("//Cla");
    			List listeNoeuds = xpa.selectNodes(racine);
    			Iterator iter = listeNoeuds.iterator();
    			Element noeudCourant = null;
    			String t = null ;
     
    			while (iter.hasNext())
    			{               
    			    Unite u = new Unite(); 
    			    noeudCourant = (Element) iter.next();
    			    xpa = XPath.newInstance("./a");
    	                              t = xpa.valueOf(noeudCourant);
    	                              System.out.println("a : " + t);
     
    	                              xpa = XPath.newInstance("./b");
    	                              t = xpa.valueOf(noeudCourant);
    	                              System.out.println("b : " + t);
     
    	                              XPath xpa2 = XPath.newInstance("//cs");
    			     List listeTab = xpa2.selectNodes(noeudCourant);
    			     Iterator iterTab = listeTab.iterator();
    			     while (iterTab.hasNext()){
    			 	Element noeudTab = null;
    				noeudTab = (Element) iterTab.next();
     
    				xpa2 = XPath.newInstance("./c");
    		                         t = xpa2.valueOf(noeudTab);
    		                         System.out.println("c : " + t);
    		                 }
     
    		}
    resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    a : 1
    b : toto
    c : 10
    c : 24
    a : 2
    b : Tata
    c : 10
    c : 24
    Je pense comprendre pourquoi il me prend toujours les 2 premier element de <cs> mais je ne vois pas comment lui dire de ne prendre que ceux qui sont dans l'element encours ????

    Merci encore.

  5. #5
    Expert éminent

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Points : 8 107
    Points
    8 107
    Par défaut
    Ton soucis vient de ton expression Xpath : quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XPath xpa2 = XPath.newInstance("//cs");
    En effet, si le chemin commence par '//', alors tous les éléments du document qui correspondent au critère qui suit sont sélectionnés : donc tu sélectionnes tous les <cs> de ton document.

    Si tu veux sélectionner juste celui en cours, tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XPath xpa2 = XPath.newInstance("./cs");
    comme tu as fait pour a et b.

    Si tu veux sélectionner tous les éléments c qui ont cs comme parent dans le noeud où tu es, tu peux utiliser l'expression xpath suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XPath xpa2 = XPath.newInstance("./cs/descendant::c");
    (pas testé, mais ça devrait être ça)

    Pour faire des expressions Xpath un peu compliquées, je te conseille ce tutoriel : http://jerome.developpez.com/xmlxsl/xpath/

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 239
    Points : 173
    Points
    173
    Par défaut
    Essayes la bibliothèque commons-digester, elle est conçue pour faire de mapping xml/objet.

    Bon courage.

Discussions similaires

  1. [XML] Comment récupérer un fichier xml dans un tableau ?
    Par n_adou dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 09/06/2008, 11h31
  2. Réponses: 2
    Dernier message: 28/09/2006, 09h48
  3. Réponses: 9
    Dernier message: 26/07/2006, 16h22
  4. Réponses: 9
    Dernier message: 27/06/2006, 21h48
  5. Réponses: 2
    Dernier message: 14/04/2006, 11h20

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