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 d'un fichier XML [JDOM]


Sujet :

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

  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Par défaut Lecture d'un fichier XML
    Salut
    J'ai ecrit un programme java qui permet de lire un fichier XML. Mon programme ne me donne pas la résultat.
    Voici 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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    /**
     * 
     */
    package xml;
    import java.io.File;
    import java.util.Iterator;
    import java.util.List;
     
    import org.jdom.*;
    import org.jdom.input.SAXBuilder;
     
    /**
     * @author root
     *
     */
    public class TestXML {
     
    	/**
             * @param args
             */
    	static org.jdom.Document document;
    	   static Element racine;
     
    	   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("/root/test.xml"));
    	      }
    	      catch(Exception e){}
     
    	      //On initialise un nouvel élément racine avec l'élément racine du document.
    	      racine = document.getRootElement();
     
         System.out.print(racine);
    	      //Méthode définie dans la partie 3.2. de cet article
     
    	      //On crée une List contenant tous les noeuds "binding" de l'Element racine
    	      List listparam =  racine.getChildren("binding");
     
    	      //On crée un Iterator sur notre liste
    	      Iterator i = listparam.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("literal").getText());
    	      }
    	   }
     
    }
    Et voici le contenu de mon fichier XML:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0"?>
    <sparql xmlns="http://www.w3.org/2005/sparql-results#">
     <binding name="p">
      <literal>Habib Youssef</literal>
     </binding>
     <binding name="cin">
      <literal>986754</literal>
     </binding>
    </sparql>
    lorsque j'execute mon code je n'obtient aucune resultat.
    S'il vous plait aider moi à resoudre ce problème le plutot possible.
    J'utilise Eclipse Europa 3.3.2 , Jdom 1.1 , jdk 1.6
    Merci d'avance pour votre aide.

  2. #2
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut
    comme ça c'est bon normalement

    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
     
    import java.io.File;
    import java.util.List;
     
    import org.jdom.Element;
    import org.jdom.input.SAXBuilder;
     
    /**
     * @author root
     * 
     */
    public class TestXML {
     
    	/**
             * @param args
             */
    	public org.jdom.Document document;
    	public Element racine;
     
    	public static void main(String[] args) {
    		try {
    			TestXML test = new TestXML();
    			// On crée une instance de SAXBuilder
    			SAXBuilder sxb = new SAXBuilder();
     
    			// On crée un nouveau document JDOM avec en argument le fichier
    			// XML
    			// Le parsing est terminé
    			test.document = sxb.build(new File("test.xml"));
     
    			// On initialise un nouvel élément racine avec l'élément racine du
    			// document.
    			test.racine = test.document.getRootElement();
     
    			System.out.println(test.racine);
    			// Méthode définie dans la partie 3.2. de cet article
     
    			// On crée une List contenant tous les noeuds "binding" de l'Element
    			// racine
    			List<Element> listparam = test.racine.getChildren();
     
    			for (Element e : listparam) {
    				// 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...
    				// On affiche le nom de l'element courant
    				for(Element el : (List<Element>)e.getChildren()){
    				System.out.println(el.getText());
    				}
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
     
    }
    faut que tu remette le bon fichier xml!

  3. #3
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Par défaut
    Salut
    Merci pour votre aide et le programme est fonctionnel. Maintenant Si je change mon fichier XML et qui une structure plus complex que cet exemple. Par exemple voici un contenu de fichier XML:
    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
    <?xml version="1.0"?>
    <sparql xmlns="http://www.w3.org/2005/sparql-results#">
      <head>
        <variable name="nom"/>
        <variable name="p"/>
        <variable name="cin"/>
      </head>
      <results>
        <result>
          <binding name="nom">
            <uri>http://www.owl-ontologies.com/Ontology1239120737.owl#admin1</uri>
          </binding>
          <binding name="p">
            <literal datatype="http://www.w3.org/2001/XMLSchema#string">Habib Youssef</literal>
          </binding>
          <binding name="cin">
            <literal datatype="http://www.w3.org/2001/XMLSchema#int">986754</literal>
          </binding>
        </result>
      </results>
    </sparql>
    Comment je peux avoir les valeurs de la balise literal du document.
    S'il vous plait j'ai besoin de votre aide.
    Merci d'avnace.

  4. #4
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut
    je ne sais pas pourquoi, le passage du nom a la méthode getChild() ne marche pas, il renvoie null a chaque fois et getChildren renvoie une liste vide

    comme ça ça marche mais c'est pas super!

    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
     
    import java.io.File;
    import java.util.List;
     
    import org.jdom.Element;
    import org.jdom.input.SAXBuilder;
     
    /**
     * @author root
     * 
     */
    public class TestXML {
     
    	/**
             * @param args
             */
    	public org.jdom.Document document;
    	public Element racine;
     
    	public static void main(String[] args) {
    		try {
    			TestXML test = new TestXML();
    			// On crée une instance de SAXBuilder
    			SAXBuilder sxb = new SAXBuilder();
     
    			// On crée un nouveau document JDOM avec en argument le fichier
    			// XML
    			// Le parsing est terminé
    			test.document = sxb.build(new File("test.xml"));
     
    			// On initialise un nouvel élément racine avec l'élément racine du
    			// document.
    			test.racine = test.document.getRootElement();
     
    			System.out.println(test.racine);
     
    			//on recupere l'element results
    			Element results = (Element)test.racine.getChildren().get(1);
    			System.out.println(results);
    			Element result = (Element)results.getChildren().get(0);
    			//on a recupere les binding
    			List<Element> listparam = result.getChildren();
     
    			for (Element e : listparam) {
    				// On affiche le nom de l'element courant
    				System.out.println(e);
    				for(Element el : (List<Element>)e.getChildren()){
    					if(el.getName().equals("literal"))
    					System.out.println(el.getText());
    				}
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
     
    }

  5. #5
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Par défaut
    Salut
    Merci votre programme est fonctionnel. j'ai essayé de mettre le résultat dans un vecteur pour que je puisse utiliser les valeurs plus tard dans le code. Mais lorsque j'ai affiché le contenu du mon vecteur j'ai obtenu ce ci:
    nom:null cin: null
    nom:Habib Youssef cin: Habib Youssef
    nom:Habib Youssef cin: 986754

    Voici la modification que j'ai effectue :
    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
     
    			for (Element e : listparam) {
    				// On affiche le nom de l'element courant
    				//System.out.println(e);
    				for(Element el : (List<Element>)e.getChildren()){
    					{
    						if(el.getName().equals("literal"))
    						{
    							  test.h.addElement(el.getText());
    							  test.nom=(String) test.h.firstElement();
    							  test.cin=(String) test.h.lastElement();
     
    							}
     
    					}
     
    				}
    				System.out.println("nom:" + test.nom + "\t cin: "+ test.cin);
    S'il vous plait aidez moi j'ai besoin de votre aide.
    Merci d'avance de votre aide.

  6. #6
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Par défaut
    salut
    j'ai réussi à resoudre mon probléme.
    j'ai une petite question: si mon fichier est dans cette adresse http://localhost:8080/webdav/test.xml Comment je peux le lire?
    Merci d'avance pour votre aide.

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

Discussions similaires

  1. Problème de lecture d'un fichier XML d'InfoPath
    Par snadus dans le forum InfoPath
    Réponses: 7
    Dernier message: 06/06/2006, 14h45
  2. Lecture d'un fichier XML de config avec Java
    Par cofy dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 31/01/2006, 15h54
  3. Problème de lecture dans un fichier xml
    Par Pyra dans le forum Langage
    Réponses: 2
    Dernier message: 18/12/2005, 00h13
  4. Probleme de lecture d'un fichier XML
    Par chleuh dans le forum Langage
    Réponses: 8
    Dernier message: 30/08/2005, 12h04
  5. [C#] [XML] Lecture d'un fichier XML => Combobox
    Par Chad`Chiwa dans le forum Windows Forms
    Réponses: 8
    Dernier message: 09/03/2005, 08h57

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