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] Selectionner un noeud [Débutant(e)]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut [XPath] Selectionner un noeud
    Bon voilà je débute au niveau XPATH. Il semblerait que ce soit idéal d'utiliser XPATH quand on cherche des noeuds précis dans un arbre DOM.
    J'ai essayé plusieurs choses et apparemment je suis pas douée car je n'arrive pas à sélectionner mon noeud

    Voilà mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    XPathFactory xPathFactory = XPathFactory.newInstance();
    XPath xpath = xPathFactory.newXPath();
    try {
    	XPathExpression expression = xpath.compile("//child::Header[1]");
    	Node noeud = (Node)expression.evaluate(originalReq, XPathConstants.NODE);
     
    	System.out.println(noeud.getNodeName());
    } catch (XPathExpressionException e1) {
    	e1.printStackTrace();
    	System.exit(1);
    }
    Mon fichier XML (DOM tree) est ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <root>
       <Header>
          <To>
              <Dest>bla</Dest>
              <Type>bla<bla>
           </To>
       </Header>
    <root>
    Comme vous l'avez surement compris, j'essai de récupérer l'élément Header.
    originalReq est l'objet Document représentant mon xml.
    "//child::Header[1]" sélectionne le premier élément Header, sous la racine, non?

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    essaye avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XPathExpression expression = xpath.compile("//Header[position()=1]");
    ou peut être même (peut être qu'il envoi le premier dans ce cas):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XPathExpression expression = xpath.compile("//Header");
    Ce n’est pas en cassant le thermomètre que vous ferez baisser la température

  3. #3
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut
    Bon voilà ce que je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    try {
     XPathFactory xPathFactory = XPathFactory.newInstance();
     XPath xpath = xPathFactory.newXPath();
     XPathExpression expression = xpath.compile("/root/Header/To");
     NodeList noeud = (NodeList)expression.evaluate(originalReq,XPathConstants.NODESET);
     System.out.println("Length: " + ((NodeList)noeud).getLength());
    } catch (XPathExpressionException e1) {
     // TODO Auto-generated catch block
     e1.printStackTrace();
     System.exit(1);
    }
    La longueur de la liste retournée est toujours 0

    originalReq est un object de type Document crée à l'aide du parser Xerces.

  4. #4
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut
    Ok j'ai enfin trouvé mon problème. Comme j'utilise des espaces de noms dans mon fichier XML, je dois faire de même avec mes expression Xpath (utilisant un NamespaceContext).

    Donc ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XPathExpression expression = xpath.compile("/root/Header/To");
    donne plutôt cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     XPathExpression expression = xpath.compile("/x:root/x:Header/x:To");
    Avec le NamespaceContext associant le "x" avec l'espace de noms correct.

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

Discussions similaires

  1. [XPATH]Ne pas selectionner certains noeud
    Par DonKnacki dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 18/06/2010, 16h28
  2. [XPATH] Selectionner des noeuds dont on ne connait pas le nom
    Par Lolo19 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/09/2009, 15h38
  3. [XPATH] Selectionner 2 noeuds et les obtenir ordonnés
    Par Invité dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 09/01/2008, 17h08
  4. [XPATH] Selectionner un noeud selon la valeur de son attribut
    Par Gregco dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 29/10/2007, 15h34
  5. [VB.NET] Selectionner un noeud du treeview par le code
    Par Elbarto dans le forum Windows Forms
    Réponses: 7
    Dernier message: 23/02/2006, 10h49

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