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

XSL/XSLT/XPATH XML Discussion :

[XPath][java] utiliser les nombres


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut [XPath][java] utiliser les nombres
    Bonjour,

    Je voudrais récupérer un nombre avec XPath et Java. J'ai pas mal lu la doc, et aucune de mes expressions ne semble correcte.

    Voici mon expression:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Document doc = ...;
    XPath xp = ...;
    xp.compile("/a/b[name='z']/c/text()").evaluate(doc, XPathConstants.NUMBER);
    J'ai également essayé les expressions suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    xp.compile("/a/b[name='z']/c/number()").evaluate(doc, XPathConstants.NUMBER);
    xp.compile("/a/b[name='z']/c/number(text())").evaluate(doc, XPathConstants.NUMBER);
    xp.compile("/a/b[name='z']/c/fn:number(text())").evaluate(doc, XPathConstants.NUMBER);
    xp.compile("fn:number(/a/b[name='z']/c/text())").evaluate(doc, XPathConstants.NUMBER);
    xp.compile("number(/a/b[name='z']/c/text())").evaluate(doc, XPathConstants.NUMBER);
    Rien à faire : soit ça ne s'execute pas, soit j'obtiens un NaN.

    Quelqu'un sait comment utiliser correctement les nombres avec XPath ?

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    L'évaluation par XPathConstants.NUMBER renvoie un Double:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Document doc = ...;
    XPath xp = ...;
     
    XPathExpression exp = xp.compile(expression);
     
    Double d = (Double) exp.evaluate(doc,XPathConstants.NUMBER);

    ERE

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Oui, ça je sais bien. D'ailleurs, je caste toujours en Number et récupère un intValue() dessus. Si mon problème était cela, j'aurais posté dans le forum Java.

    Mais malheureusement, c'est l'expression que je n'arrive pas à trouver. Pour le XML suivant, quelle est l'expression à utiliser afin de récupérer le nombre "2" (ou "2.0" avec XPath (sinon, je sais : je lis la valeur en texte et parse le texte moi-même)?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" ?>
    <a>
      <b>2</b>
    </a>
    Où dois-je placer la fonction XPath "number()" ?

  4. #4
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Oui, ça je sais bien. D'ailleurs, je caste toujours en Number et récupère un intValue() dessus. Si mon problème était cela, j'aurais posté dans le forum Java.
    Désolé, mais à la lecture de ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Document doc = ...;
    XPath xp = ...;
    xp.compile("/a/b[name='z']/c/text()").evaluate(doc, XPathConstants.NUMBER);
    le CAST n'est pas évident... alors cool stp.

    Concernant ta seconde demande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Double valB = (Double) xpath.evaluate("/a/b", document, XPathConstants.NUMBER);
    ERE

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/05/2015, 12h18
  2. [LDAP / Java] Utiliser les objetclass comme filtre
    Par jehal dans le forum Langage
    Réponses: 1
    Dernier message: 30/05/2013, 23h47
  3. [XPATH] Pouvoir utiliser les fonctions XPath 2.0 avec Java
    Par Phoennyx dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 08/11/2008, 21h53
  4. [XSL]Impossible d'utiliser les fonctions XPath 2.0
    Par cvmz dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 27/03/2006, 19h19

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