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


Sujet :

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

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Points : 72
    Points
    72
    Par défaut Problème lors de lecture d'un fichier XML
    Bonjour à tous,
    Alors voila, j'ai un fichier sites.xml qui contient un ensemble d'information sur des sites (@ip, VpnIp,...). Voici un extrait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <sites>
      <site>
        <ip>127.0.0.1</ip>
        <vpnip>VPNLL00404</vpnip>
    ....
      </site>
    </sites>
    En tout j'ai 18 sites.
    D'un autre coté j'ai mon application qui va venir et lire ce fichier, extraire les @ip des different sites et essayer un isReachable() pour tester la ligne.
    Mais voila, quand je lance un test, je me rend compte que le programme me ne lit pas tout les site mais seulement la moitier (1, 3, 5, 7, 9, ...).
    Je ne voit pas d'ou provient cette erreur. J'affiche si aprés des portions de code d'ou peut provenir l'erreur.

    la méthode qui va exécuter le isReachable


    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
    public ArrayList<TestResult> isReachable(){
    		int timeout=10000;
    		try{
    			Site s= new Site();
    			ArrayList<Site> sites=s.getAllSite();
    			Iterator<Site> i=sites.iterator();
    			ArrayList<TestResult> results= new ArrayList<TestResult>();
    			while(i.hasNext()){
    				//création d'un reultat result et initialisation
    				TestResult result= new TestResult();
    				result.setSite(i.next());
    				String host= result.getSite().getIp();
    				result.setResult(InetAddress.getByName(host).isReachable(timeout));
    				//ajouter le resultat au tableau 
    				results.add(result);
    			}
    			return results;
    		}
    		catch (Exception e) {
    			System.out.println(e.getMessage());
    			return null;
    		}
    	}
    La méthode qui me lit le fichier xml et me retourn les sites

    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
    public ArrayList<Site> getAllSite(){
    		final Document document;
    		final Element racine;
     
    		SAXBuilder sxb= new SAXBuilder();
     
    		try{
    			document = sxb.build(new File("sites.xml"));
    			racine= document.getRootElement();
    			List<String> sites= racine.getChildren("site");
    			ArrayList<Site> site= new ArrayList<Site>();
    			Iterator i= sites.iterator();
    			while (i.hasNext()) {
    				Element courant= (Element)i.next();
    				Site s= new Site();
    				s.setNom(courant.getChild("nom").getText());
    				s.setDebit(courant.getChild("debit").getText());
    				s.setVpnIp(courant.getChild("VpnIp").getText());
    				s.setIp(courant.getChild("ip").getText());
    				site.add(s);
    			}
    			return site;
    		}catch (Exception e) {
    			System.out.println(e.getMessage());
    			return null;
    		}
    	}
    Le main

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public static void main(String[] args) {
    		TestLigne t= new TestLigne();
    		ArrayList<TestResult> r= t.isReachable();
    		Iterator<TestResult> i= r.iterator();
    		while (i.hasNext()) {
    			System.out.println(i.next().getSite().getIp()+"--"+i.next().getResult().toString());
    		}
     
     
    	}
    Merçi pour vos réponses.

  2. #2
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Bonjour, il faudrait faire un peu de debug pour ce genre de problème, vérifier le contenu certaines variables, comme la liste des sites par exemple.
    Si tu ne sais pas utiliser de debugger (enfin c'est tout simple avec Eclipse ou NetBeans), utilise des traces System.out.println();

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Points : 72
    Points
    72
    Par défaut
    Salut,
    bon voila comme vous m'avez dit, j'ai débogué mon application et j'ai bien mes variables qui sont dans le Main qui sont bien initialiser et contiennent bien toutes les valeurs.
    Le problème se pose donc dans ma dernière ligne du code qui est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while (i.hasNext()) {
    			System.out.println(i.next().getSite().getIp()+"--"+i.next().getResult().toString());
    		}
    Franchement, je ne voit pas mon erreur :p.

    cdlt

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Points : 72
    Points
    72
    Par défaut
    Voila, j'ai résolue le problème en écrivant mon dernier post . Au fait c'était bidon, voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while (i.hasNext()) {
    TestResutl tr= i.next();			System.out.println(tr.getSite().getIp()+"--"+tr.getResult().toString());
    		}

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Ben là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(i.next().getSite().getIp()+"--"+i.next().getResult().toString());
    Tu fais 2 next() à chaque itération de la boucle while.
    EDIT : A heu, trop tard :p

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

Discussions similaires

  1. Problème lors de lecture ou écriture fichier XML.
    Par Jeano81 dans le forum VB.NET
    Réponses: 9
    Dernier message: 09/05/2015, 22h59
  2. probléme avec la lecture d'un fichier xml
    Par adel.87 dans le forum Débuter
    Réponses: 13
    Dernier message: 09/10/2008, 13h54
  3. problème lors de la sauvegarde du fichier XML
    Par DiamonDonald dans le forum VB.NET
    Réponses: 15
    Dernier message: 11/02/2008, 16h02

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