[XML/XPath] jaxen : probleme function "parent" de XPath

funxav Messages postés 25 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 30 avril 2005 - 21 juin 2004 à 10:43
funxav Messages postés 25 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 30 avril 2005 - 23 juin 2004 à 14:36
Bonjour

J'ai un probleme avec jaxen pour utiliser la fonction parent de XPath :
Quand j'essaie de faire ça :

import ...

DocumentNavigator dn=new DocumentNavigator();
try {
objet=dn.getDocument("TESTXPath.xml");
apath=dn.parseXPath("/Entry/Resultats/step/Population/individu/*");
result=apath.evaluate(objet);
System.out.println(result);
apath=dn.parseXPath("/Entry/Resultats/step/Population/parent::*");
result=apath.evaluate(objet); // ---> exception
System.out.println(result);
}
catch(Exception e) {
e.printStackTrace();
}

il m'affiche bien le premier result, mais après, il me lance l'exception ci dessous :

Exception in thread "main" java.lang.NoSuchMethodError: org.jdom.Element.getParent()Lorg/jdom/Element; at org.jaxen.jdom.DocumentNavigator.getParentAxisIterator(DocumentNavigator.java: 252)
at org.jaxen.expr.iter.IterableParentAxis.iterator(IterableParentAxis.java:82)
at org.jaxen.expr.DefaultStep.axisIterator(DefaultStep.java:139)
at org.jaxen.expr.DefaultLocationPath.evaluate(DefaultLocationPath.java:188)
at org.jaxen.expr.DefaultAbsoluteLocationPath.evaluate(DefaultAbsoluteLocationPat h.java:126)
at org.jaxen.expr.DefaultXPathExpr.asList(DefaultXPathExpr.java:107)
at org.jaxen.BaseXPath.selectNodesForContext(BaseXPath.java:716)
at org.jaxen.BaseXPath.selectNodes(BaseXPath.java:239)
at org.jaxen.BaseXPath.evaluate(BaseXPath.java:196)
at MainTestClass.main(MainTestClass.java:85)

Pourtant, vu que la requete XPath précédente me renvoie des éléments, je suis sur que ce n'est pas un problème d'éléments introuvables.

Finalement, je n'arrive donc pas à utiliser la fonction parent de la syntaxe XPath (soit ça fait une exception, soit ça ne retourne rien)

Est-ce la syntaxe XPath qui ne va pas dans mon expression ?
Peut on faire un /.../.../parent::* ? ou //individu/parent::* ?

4 réponses

cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
22 juin 2004 à 08:25
cherche sur le site officiel 3W pour le xpath, ya des cours super!

B@ron {EU.BELGIUM}
0
funxav Messages postés 25 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 30 avril 2005
23 juin 2004 à 09:56
Non en fait, j'ai trouvé le problème plus précisément :
c'est que JDom inclue le package jaxen.
Or à un moment dans les requêtes XPath, le org.jaxen.jdom.DocumentNavigator que j'ai construit appelle la méthode getParent() d'un objet org.jdom.Element.

Jusque là rien de bien sorcier. Le problème, c'est que la classe org.jdom.Element ne possède pas ou plus de méthode getParent(), donc forcément, comme le DocumentNavigator de jaxen appelle sa méthode qui n'existe pas, ba exception "pas de méthode trouvée". ==> conflit de version ?

Pourtant, ces 2 classes (org.jaxen.jdom.DocumentNavigator) et Element font partie chacune de 2 jars (jdom-b10.jar et jaxen-jdom.jar) qui font partie d'un même fichier zip que j'ai téléchargé sur le net.

Est-ce que quelqu'un sait comment je pourrai m'en sortir ?
0
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
23 juin 2004 à 11:55
Ouep faudrait que tu charges tes documents sur le site de sun.com...

Les conflits de version dans leurs package n'exsite pas :)

B@ron {EU.BELGIUM}
0
funxav Messages postés 25 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 30 avril 2005
23 juin 2004 à 14:36
J'ai regardé sur sun mais j'ai rien trouvé sur JDOM à télécharger. Si tu trouves qqch dis-moi j'ai peut être mal vu ^^.

En fait je serai d'accord avec toi, mais j'ai pris un autre jdom.jar (celui de la version beta 9.0) et depuis ça marche donc je me demande un peu.
Vu qu'apparamment ce sont des beta y a peu être encore des problèmes.

Peut être que je me trompe.
En tout cas, maintenant j'utilise jaxen avec jdom.jar (version 9.0) et ça marche donc ...
0