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 :

[XPath] requête renvoie une liste vide [JDOM]


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Par défaut [XPath] requête renvoie une liste vide
    Bonjour à tous

    J'utilise JDOM pour gérer du XML au sein de mon API (qui est utilisée pas un client standalone et par un serveur Java EE).
    Suite à un refactoring important, j'ai visiblement cassé quelque chose au sein de mes Element. Voici ce que me montre la sortie en formattant l'élément choisi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <task id="SYS02">
      <panel id="1">
        <group id="1">
          <key>
            <datafield datafieldId="SYSUSR.USERNAME_PK">abcd</datafield>
          </key>
          <field id="4" datafieldId="SYSUSR.USERNAME_PK">abcd</field>
        </group>
      </panel>
    </task>
    Ok rien à signaler. Maintenant, je lance une requête XPath dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    List<Element> results = new LinkedList<Element>();
    try {
        XPath xpa = XPath.newInstance("//field[@datafieldId='SYSUSR.USERNAME_PK']");
        results = (List<Element>) xpa.selectNodes(context);
     
    } catch (JDOMException ex) {
        throw new RuntimeException(ex);
    }
     
    //...
    Normalement, cela devrait me donner une liste avec 1 élément dedans... Hors il me renvoie une liste vide Et je peux faire n'importe quelle requête (//field, //panel, //task, ...), toujours ce même résultat !

    Ai-je raté une étape quelque part ? La seule chose que je voie qui puisse poser problème est le fait que je fasse pas mal de clone et detach à gauche à droite, mais même en naviguant manuellement dans le XML, celui-ci semble correct...

    Merci d'avance !

    @++

  2. #2
    Membre émérite
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Par défaut
    Re,

    Hem bon autant pour moi, j'ai trouvé le souci (évidemment après avoir passé la journée à chercher et 5min après avoir posé la question ^^).

    Donc en fait, lorsqu'on fait un clone sur un Element, celui-ci est détaché automatiquement de son parent (et de son Document pour le root Element). Et visiblement, pour ma requête XPath, l'Element dois être lié à un Document...

    Au final :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Document doc = new Document(context);
    //context = doc.getRootElement();
     
    List<Element> results = new LinkedList<Element>();
    try {
        XPath xpa = XPath.newInstance("//field[@datafieldId='SYSUSR.USERNAME_PK']");
        results = (List<Element>) xpa.selectNodes(context);
     
    } catch (JDOMException ex) {
        throw new RuntimeException(ex);
    }
    @++

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Hé, je note çà, çà pourra toujours me servir

  4. #4
    Membre émérite
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Par défaut
    Salut,

    D'ailleurs, j'en ai fait un billet sur mon blog avec les sources de l'exemple

    @++

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

Discussions similaires

  1. Requête qui renvoie une liste de données
    Par fougna dans le forum Langage SQL
    Réponses: 5
    Dernier message: 02/08/2007, 12h05
  2. Fonction qui renvoie une liste
    Par la_praline dans le forum GTK+ avec C & C++
    Réponses: 20
    Dernier message: 20/04/2007, 21h22
  3. Réinitialiser une ClistCtrl à une list vide
    Par likenoother dans le forum MFC
    Réponses: 1
    Dernier message: 10/08/2006, 14h32
  4. [XPath] contenu d'une balise vide ?
    Par mimi31110 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 16/06/2006, 14h50
  5. Réponses: 2
    Dernier message: 03/05/2006, 17h00

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