Bonjour à tous,


J'aurais voulu analyser un fichier XML donné afin de savoir si il contient une certaine expression XPath, le tout en une seule passe.

Voici un exemple type du 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
<FichesClients recptTmstmp="2011-02-28 13:30:25">
	...
	<Client userId="MILDJU">
		<Coordonnees>
			<MiseAJour>2010-04-07</MiseAJour>
			<Privilege>
				<Vehicule vehiculeTyp="VOITURE">Renault Kangoo</Vehicule>
			</Privilege>
			<Commentaires commentTyp="FREE">Pretee le 23 octobre 2008</Commentaires>
		</Coordonnees>
	</Client>
	...
</FichesClients>
et voici le code Java que j'utilise pour déterminer, dans ce cas précis, le nombre de clients possédant une Renault Kangoo :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
private static final Map<String, String> XPATH_EXPRESSIONS = new HashMap<String, String>();
static {
	XPATH_EXPRESSIONS.put("EXCLU_VOITURE", "/Client/Coordonnees/Privilege/Vehicule[@vehiculeTyp='VOITURE']=");
}
 
...
 
String expression = "count(".concat(XPATH_EXPRESSIONS.get("EXCLU_VOITURE")).concat("Renault Kangoo").concat(")");
 
if (Integer.parseInt((String) xpath.evaluate(expression, message)) > 0) {
    result = true;
}
Malheureusement, le code me retourne une XPathExpressionException lors de l'évaluation de l'expression...

Dois-je d'abord reprendre la liste des noeuds dont l'attribut 'vehiculeTyp' vaut 'VOITURE', puis construire une autre boucle pour ceux dont la valeur de l'élément correspondant vaut 'Renault Kangoo' ???

Merci d'avance,
Mildju