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] namespace et xpath


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 15
    Par défaut [xpath] namespace et xpath
    Bonjour

    Je travail sur la lecture d'un fichier xml

    J'utilise dom4j et j'essai d'utiliser Xpath.

    J'arrive à lire le fichier mais je n'arrive pas a trouver noeuds de l'arbre.
    A priori c'est un probléme de definition du namespace dans mes xpath. Quelqu'un serait comment utilise les namespace dans les xpath?

    voila le type de mon 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
    14
    <subscription
    	xmlns="http://www.cchezmoi.fr/ecommerce/schema/">
    	<requestValues>
     
    		<prop1>AAA</prop1>
    		<prop2>A99ZDS</prop2>
                    .....
    	</requestValues>
    	<travelDescription>
    		<startDate>17/06/2007</startDate>
    		<endDate>17/06/2007</endDate>
    		.....
    	</travelDescription>
    </subscription>

    donc jouvre le fichier et je recupére ce node dans une var node.
    Et la a cause du name space a priori mes xpath renvoeint toujorus null.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       SAXReader reader = new SAXReader();
     
    	    HashMap map = new HashMap();
    	    map.put( "edx", "http://www.cchezmoi.fr/ecommerce/schema/");
    	    try 
    	    {
    	    Dom4jXPath xpath = new Dom4jXPath( "/edx:requestValues");
    	    xpath.setNamespaceContext( new SimpleNamespaceContext( map));
    	    Node result  = (Node) xpath.selectSingleNode(node);

    voila et result ben il est toujorus null alors que non en fait ..; ;-)

  2. #2
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonjour,

    a priori ce n'est pas un problème de Namespace, mais tout simplement de XPath : requestValues n'est pas directement sous la racine XML, mais sous subscription.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dom4jXPath xpath = new Dom4jXPath( "/edx:subscription/edx:requestValues");
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 15
    Par défaut
    Bonjour et merci beaucoup pour ta réponse. Mais a priori ce n'était pas ca.

    Aprés plusieurs heures de recherche sur plein de sites que je m'en sort pas que ca m'énerve j'ai bcp modifié le kode.

    et finalement ca marche donc voili voila ce que j'ai fait : en esperant que ca aide les prochianes qui font face a la même difficulté.

    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
     
    /**
    * setup xpath navigator for navigation through the tree
    */
            // build a namespace map to store the namespace
            Map uris = new HashMap();
            uris.put("REAL", "http://www.cchezmoi.fr/ecommerce/schema/");
     
     
           /**
    	* look for the node request values
    	 */     
           // creates the xpath
            XPath navigator = node.createXPath("REAL:requestValues");
     
            // set the namespace 
            navigator.setNamespaceURIs(uris);
     
            Node requestValues = navigator.selectSingleNode(node);
            System.out.println(requestValues.toString());

    voili voila je sais pas ce que ca vaut mais ca marche, si vous trouvez des défauts n'hesitez pas a me le signaler.

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

Discussions similaires

  1. [JDOM] Xpath namespace
    Par tom78 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 30/06/2009, 14h37
  2. [XSLT et XPath] namespace-uri
    Par Soutou dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 06/07/2008, 15h26
  3. [Xpath] [Java] Comment ignorer les namespaces avec XPath?
    Par azerr dans le forum XSL/XSLT/XPATH
    Réponses: 12
    Dernier message: 19/02/2008, 09h23
  4. [ORACLE XML DB] - Xpath & NameSpace
    Par jacquesh dans le forum SQL
    Réponses: 1
    Dernier message: 18/06/2007, 19h47
  5. [XPath]variable dans xpath
    Par Hichan dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 10/05/2007, 14h40

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