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 :

Résultat vide pour une requete xpath [XPATH]


Sujet :

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

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 147
    Points : 156
    Points
    156
    Par défaut Résultat vide pour une requete xpath
    Bonjour,

    J'ai d'abord essayé avec l'api standard DOM de java puis avec jdom.
    dans les 2 cas, l'expression xpath est compilée correctement et le document est correctement construit. l'évaluation de l'expression ne retourne aucun résultats alors qu'elle devrait.
    J'ai controlé plusieurs fois dans le débuggeur le contenu et type des variables.

    Voici le code exécuté:
    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
    21
    22
    23
    24
    25
    26
     
    // document est de type org.jdom.Document et contient mon document parsé grace à SAXBuilder
    // exprXpath est de type String et contient //g
     
    // vérifions qu'il y a bien au moins un élément g dans le document
    Element racine = document.getRootElement();
    System.out.println(racine);
    Element premier = ((Element)racine.getChildren().get(1));
    System.out.println(premier);
    Element deuxieme = ((Element)premier.getChildren().get(0));
    System.out.println(deuxieme);
    Element troixieme = ((Element)deuxieme.getChildren().get(0));
    System.out.println(troixieme);
    Element quatrieme = ((Element)troixieme.getChildren().get(0));
    System.out.println(quatrieme);
    Element cinquieme = ((Element)quatrieme.getChildren().get(8));
    System.out.println(cinquieme);
    System.out.println();
     
    XPath xpa = XPath.newInstance(exprXpath);
    // vérifions que jdom a bien compilé l'expression xpath
    System.out.println(xpa);
     
    // évaluons les résultats
    List results = xpa.selectNodes(racine) ;
    System.out.println(results.size());
    voici le résultat dans la console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [Element: <TEI [Namespace: http://www.tei-c.org/ns/1.0]/>]
    [Element: <text [Namespace: http://www.tei-c.org/ns/1.0]/>]
    [Element: <front [Namespace: http://www.tei-c.org/ns/1.0]/>]
    [Element: <titlePage [Namespace: http://www.tei-c.org/ns/1.0]/>]
    [Element: <titlePart [Namespace: http://www.tei-c.org/ns/1.0]/>]
    [Element: <g [Namespace: http://www.tei-c.org/ns/1.0]/>]
     
    /descendant-or-self::node()/child::g
    0
    Le document est conforme à sa dtd et le code est exécuté sans erreurs.
    Bref tout semble ok.
    Je précise que si j'utilise DOM et l'api standard javax.xml.xpath, il n'y a pas d'erreurs ni de résultat non plus.

    Quelqu'un à une idée ???
    Parce que je seche la
    Est ce que ca peut venir des namespaces ou de l'encodage ?

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Up !!
    J'ai le même phénomène inexplicable
    mais avec ces quelques lignes :
    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
     
    	public static void main(String [] args) throws JDOMException, IOException{
     
    		SAXBuilder sxbi = new SAXBuilder();	
     
    		Document scenei;
    		scenei = sxbi.build(new File("D:\\I.xml"));
     
    		Element root = scenei.getRootElement();
     
    		XPath xpaOD = XPath.newInstance("//choice");
    		List<Element> listOD = xpaOD.selectNodes(root);
     
    		System.out.println(listOD.size());
     
    }
    Ma liste est vide alors que dans mon fichier I.xml il y à bien une balise choice
    mais le plus bizarre c'est ce code
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    	private void LoadRoute() {
    		try {
    			Element root = arbrexmt.getRootElement();
    			XPath xpaROUTE = XPath.newInstance("//ROUTE");
    			List<Element> listROUTE = xpaROUTE.selectNodes(root);
    			Iterator<Element> itroute = listROUTE.iterator();
    			Element temproute = null;
    			// boucle d'ajout des élément Routes au modèle de données
     
    			while (itroute.hasNext()) {
    				temproute = (Element) itroute.next();
     
    				Route objroute = new Route(temproute
    						.getAttributeValue("fromNode"), temproute
    						.getAttributeValue("fromField"), temproute
    						.getAttributeValue("toNode"), temproute
    						.getAttributeValue("toField"));
    				if (!routes.containsKey(objroute.getFromNode())) {
    					routes.put(objroute.getFromNode(), new ListRoute());
    				} else {
    					routes.get(objroute.getFromNode()).add(objroute);
    				}
    			}
    		} catch (JDOMException e) {
    			System.out
    			.println("Erreur lors de la modélisation des ROUTE du fichier");
    			e.printStackTrace();
    		}
    	}
    qui fonctionne sans aucun souci
    Quelqu'un pourrait - il m'éclairer merci

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Problème resolu
    En reprenant mon code cette après j'ai listé les différences en mes deux méthodes.
    le problème ne vient pas de mon code mais de mes fichiers de données xml.
    dans la balise racine du document qui posait problème je déclare un namespace comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <XMT-A xmlns="urn:mpeg:mpeg4:xmta:schema:2002" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="xmt-a.xsd">
    ...
    </XMT-A>
    dans celui qui passe je me contente d'ouvrir la balise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <XMT-A>
    ...
    </XMT-A>
    ==> ma solution consiste a supprimer les indications de namespace

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

Discussions similaires

  1. SimpleXML avec XPATH pour une requete simple en apparence
    Par NissqR dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 23/03/2010, 10h09
  2. résultat vide d'une requete MDX :(
    Par doudy99 dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 12/02/2010, 10h47
  3. [MySQL] Condition pour une Requete sql vide
    Par needles94000 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/03/2006, 18h03
  4. Réponses: 7
    Dernier message: 10/02/2005, 00h13
  5. Aide pour une requete ... "COUNT(*)"
    Par mechantebestiole dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/05/2004, 16h27

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