affichage non complet des elements d'un fichier XML

mannouna997
affichage non complet des elements d'un fichier XML

Bonsoir
J'ai écrit un programme qui extrait un fichier XML dans une liste puis je l'affiche mais le probléme est qu'il n'affiche pas tous les élements du fichier.
Mon fichier est de la forme suivante

-
1
-
1
dport
22
17;18;19;20;21;22;23

-
2
dport
80
31;34;35;36;37

-
3
dport
53
32;33

-
4
dport
25
1


quand je fais l'affichage il ne m'affiche que le 2 élements de
j'ai fait un compteur qui calcule le nombre de RT et il m'affiche 2 or j'en ai 4 element

Mon code est le suivant (c'est une fonction dans une classe publique):
static void ExtractionChamps () {
// declararion des elements de la liste
String idRR=null;
String idRT=null;
String champ=null;
String valeur=null;
String ChampAcceptRid=null;
String [] champA=null;
String RT=null;

// 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

document = sxb.build(new File("RRSet.xml"));
}
catch(Exception e){}

//On initialise un nouvel élément racine avec l'élément racine du document.
racine = document.getRootElement();
//creation des noeuds
List listRR = racine.getChildren("RR");
//On crée un Iterator sur notre liste
Iterator i = listRR.iterator();
int compteurRR=0;
//Extraction des champs de l'ensemble RR
while(i.hasNext())
{
// declaration de la liste de Reject Term
ArrayList monArrayListRT = new ArrayList() ;
// un objet qui contient les strucures des Rejected Rules
ChampRR CRR=new ChampRR();
Element courant = (Element)i.next();
//Extraction du premier champ id
idRR=courant.getChild("id").getText();
CRR.id=idRR;
Element racineRT=racine.getChild("RR");
List listRT = racineRT.getChildren("RT");
//On crée un Iterator sur notre liste
Iterator j = listRT.iterator();
int compteurRT =0;
while(j.hasNext())
{
ArrayList AcceptidList =new ArrayList();
// un objet qui contient les strucures des Rejected terms RT
ChampEnsemble CE=new ChampEnsemble();

Element courant2 = (Element)j.next();

idRT=courant2.getChild("numero").getText();
champ=courant2.getChild("champ").getText();
valeur=courant2.getChild("valeur").getText();
ChampAcceptRid=courant2.getChild("AcceptRid").getText();
String []ChampA = ChampAcceptRid.split(";");
for (int k=0; k AcceptidList.add(ChampA[k]);
}
CE.initialise(idRT, champ, valeur, AcceptidList);
monArrayListRT.add(CE);
compteurRT++;
}
System.out.println("le nombre de terme à rejetrer = "+compteurRT);
CRR.initialise(idRR, monArrayListRT);
monArrayListRR.add(CRR);

}//fin while

}//fin methode
Merci

Niroken

Bonjour,

J'ai eu un problème similaire en utilisant les
classes suivantes de java :

import javax.xml.parsers.*; 
import javax.xml.xpath.*;
import org.w3c.dom.*; 
import org.xml.sax.*;

A savoir que lorsque je parsais mon fichier xml
la liste elementRoot.getChildNodes() renvoyait
deux fois plus d'éléments qu'il y en avait en réalité.

Seulement un élement sur deux de la liste était null.

Donc dans l'urgence et n'ayant pas cherché de méthode
plus élégante j'avais fait une boucle "for" sur la totalité
des éléments de la liste et je faisais un i = i + 2 au lieu de
+ 1 habituellement.

Je ne sais pas si tu as exactement le même soucis dans ton
cas mais j'espère que ça peut t'aider.

Bonne chance,
Niroken

mannouna997
Merci

Le probléme est que meme si je fais ce test cela persiste car le nombre de sous elements est varaibles, une fois 2 , une autre 8 et une autres 11 alors il me les affiche mais uniquement 2sous elements de chacun peut importe le nombre. :shock:
ALors ma solution que j'ai trouvé est d'utiliser des fichiers texte et ca marche, mais pas trop joli comme les fichiers XML :idea: