Bonjour a tous,
je suis debutante en java et je programme une petite application sur parcours d'un document XML avec l API JDOM mais je rencontre un probleme dont je trouve ni la cause ni la solution... alors sans tarder je vous exlique:
lors de parcours du fichier XML, le code va sauvegarder toutes les balises dans une NodeList et a partir de la chaque Node je le mettrai dans une autre liste et je vais acceder a son fils et tester sur le type de ce dernier, si c'est un TEXT_NODE il me la rajoute dans la 2eme liste .. ca marche mais le probleme c'est que quand le fils d'une balise est une autre balise il me la considere comme un TEXT_NODE alors quelle est un ELEMENT_NODE ... mais son getWholeText() est vide donc il me rajoute ce blanc dans la 2eme liste ce qui m'arrange pas du tout
Prière de m aider
voila mon code
Exemple avec ce 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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 File file = new File("C:\\Exercice2.xml"); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(file); doc.getDocumentElement ().normalize (); System.out.println ("la racine est " + doc.getDocumentElement().getNodeName()); NodeList listOfnds = doc.getElementsByTagName("*"); int compteur = listOfnds.getLength(); System.out.println("Total des balises: " + compteur); for(int o=0;o < compteur; o++) { Node rrr= listOfnds.item(o); String fff = rrr.getNodeName(); al.add(fff); Node ttt = rrr.getFirstChild(); short type = ttt.getNodeType(); // System.out.println("type "+ type); type =3!!! if(type == TEXT_NODE) { String ddd = ((Text) ttt).getWholeText(); al.add(ddd); } } // la boucle for suivante n'est que pour afficher ce qu il y a dans la liste al -- for(int u=0; u < al.size(); u++) { System.out.println("mot num "+ u + " = "+ al.get(u)); }
le resultat est
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 <?xml version="1.0" encoding="UTF-8"?> <personnes> <etudiant> <nom>CynO</nom> <prenoms> <prenom>Nicolas</prenom> <prenom>Laurent</prenom> </prenoms> </etudiant> <etudiant classe="P1"> <nom>Superwoman</nom> </etudiant> <etudiant classe="P1"> <nom>Don Corleone</nom> </etudiant> </personnes>
la racine est personnes
Total des balises: 10
mot num 0 = personnes
mot num 1 =
mot num 2 = etudiant
mot num 3 =
mot num 4 = nom
mot num 5 = CynO
mot num 6 = prenoms
mot num 7 =
mot num 8 = prenom
mot num 9 = Nicolas
mot num 10 = prenom
mot num 11 = Laurent
mot num 12 = etudiant
mot num 13 =
mot num 14 = nom
mot num 15 = Superwoman
mot num 16 = etudiant
mot num 17 =
mot num 18 = nom
mot num 19 = Don Corleone
Partager