j'ai un fichier xml dont la forme générale est la suivante:
je voudrais filtrer ce fichier xml selon l'attribut type de l'Element mot.C'est-à-dire que le filtre que je voudrais créer, permettra de ne prendre en compte que les elements mot dont le type est ident . le code que j'ai utilisé est le suivant:
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 <texte> <phrase> <mot type="word"> <nature val="comm">ali</nature> <nature val="ident"></nature> </mot> <mot type="ident"> <nature val="comm">nom</nature> <nature val="ident"></nature> </mot> <mot type="word"> <nature val="comm">amir</nature> <nature val="ident"></nature> </mot> <mot type="ident"> <nature val="comm">nom</nature> <nature val="ident"></nature> </mot> </phrase> <phrase> . . .</phrase> </texte
Ce que j'ai comme résultat:
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
60
61 static void afficheFiltre(){ //On crée un nouveau filtre Filter filtre = new Filter() { /** * */ private static final long serialVersionUID = 1L; //On définit les propriétés du filtre à l'aide de la méthode matches public boolean matches(Object ob) { //1 ère vérification : on vérifie que les objets qui seront filtrés sont bien des Elements if(!(ob instanceof Element)) {return false;} //On crée alors un Element sur lequel on va faire les vérifications suivantes. Element element = (Element)ob; //2 ème vérification: on vérifie que le type est bien "ident" int verifType = 0; List listMot= element.getChildren("mot"); Iterator i =listMot.iterator(); while (i.hasNext()) { Element courant= (Element)i.next(); if (courant.getAttributeValue("type").equals("ident")) {verifType= 1;}else {verifType=0;} } //verification des conditions if (verifType == 1) { return true; } else {return false;} } }; // fin filtre List resultat= racine.getContent(filtre); Iterator j= resultat.iterator(); while(j.hasNext()) { Element courant1 = (Element) j.next(); List listM=courant1.getChildren("mot"); Iterator k= listM.iterator(); while(k.hasNext()) { Element cour= (Element)k.next(); System.out.println(cour.getChildText("nature")); } } }
Or moi, je voudrais avoir
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ali nom amir nom
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 nom nomje ne sais pas quoi faire.pouvez-vous m'aider
Partager