j'ai un fichier xml dont la forme générale est la suivante:
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
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
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"));
 
		   }
 
	}
 
}
Ce que j'ai comme résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
ali
nom
amir
nom
Or moi, je voudrais avoir
je ne sais pas quoi faire.pouvez-vous m'aider