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:
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:
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:
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:
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.