IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

Problème de count [XPATH]


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2010
    Messages : 32
    Par défaut Problème de count
    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

  2. #2
    Nouveau candidat au Club
    Profil pro
    Cto
    Inscrit en
    Février 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Cto

    Informations forums :
    Inscription : Février 2011
    Messages : 2
    Par défaut
    Essaie plutôt avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /FichesClients/Client/Coordonnees/Privilege/Vehicule[@vehiculeTyp='VOITURE' and .='Renault Kangoo']
    ou ça (c'est pareil)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /FichesClients/Client/Coordonnees/Privilege/Vehicule[@vehiculeTyp='VOITURE'][.='Renault Kangoo']
    Et puis fait attention dans la construction de ton expression:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "XXX=".concat("Renault Kangoo") ça donne: XXX=Renault Kangoo 
    et non pas ce que tu veux XXX='Renault Kangoo'

  3. #3
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2010
    Messages : 32
    Par défaut
    Merci Pegman, je vais essayer avec tes propositions.

    Et la présence des apostrophes, c'était uniquement pour séparer les champs du reste de la phrase. Ce que je recherche, c'est bien la valeur Renault Kangoo.

  4. #4
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2010
    Messages : 32
    Par défaut
    Même avec ta solution, j'avais toujours la même erreur... Et puis, je me suis demandé si message était du bon type. Ce qui n'était pas le cas vu qu'il s'agissait d'un vulgaire String !

    J'ai donc d'abord créé un object InputSource comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InputSource is = new InputSource(new StringReader(message));
    et ensuite remplacé le second paramètre de la méthode evaluate par ce nouvel objet.

    Et là, champagne, tes solutions fonctionnent à merveille !!!

    Grand merci mon cher Pegman.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de count dans jointure
    Par metfan dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/08/2007, 09h58
  2. Problème avec COUNT() et la récupération des valeurs..
    Par Marshall_Mathers dans le forum Outils
    Réponses: 4
    Dernier message: 25/06/2007, 12h26
  3. Problème de count
    Par Mat_DZ dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/08/2006, 16h18
  4. Problème avec COUNT
    Par LhIaScZkTer dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/01/2006, 02h16
  5. Access/SQL : Problème avec Count
    Par Taurëndil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/01/2005, 15h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo