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 :

Evaluer une expression xpath dans un xml [XPATH]


Sujet :

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

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 71
    Points : 48
    Points
    48
    Par défaut Evaluer une expression xpath dans un xml
    Je cherche un moyen de récupérer dans un xml touts les Strings qui correspondent à l'expression xpath entrée en paramètre
    J'ai bien compris comment évaluer un xpath, mais ca ne me retourne que la première valeur rencontré.
    comment faire une itération sur tout le xml pour récupérer un tableau de String correspondant à toutes les valeurs rencontrées

    Voici ma méthode evaluerSAX
    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
     class ExempleXPath{
     
    	public void  evaluerSAX(File fichier, String expression, QName retour){
    		try{
    			//creation de la source
    			InputSource source = new InputSource(new FileInputStream(fichier));
     
    			//creation du XPath 
    			XPathFactory fabrique = XPathFactory.newInstance();
    			XPath xpath = fabrique.newXPath();
     
    			//evaluation de l'expression XPath
    			XPathExpression exp = xpath.compile(expression);
    			Object resultat = exp.evaluate(source,retour);
     
    			System.out.println(resultat);
    		}catch(XPathExpressionException xpee){
    			xpee.printStackTrace();
    		}catch(IOException  ioe){
    			ioe.printStackTrace();	
    		}
    	}
     
    }
    Voici une application de la méthode avec une expression xpath entrée en paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try{
               ExempleXPath exp = new ExempleXPath();
    	   File xml = new File("testXml/fichier.xml");
    	   exp.evaluerSAX(xml, "//membre[@pseudo=toto]", XPathConstants.STRING);
    }catch(Exception e){
    			      e.printStackTrace();	
    		           }

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    j espere que le document que tu produis depuis ton application Java est conforme aux spécifications

    si tel est le cas une simple itération de la réponse fournie devrait répondre à tes critères (voir JSON)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 71
    Points : 48
    Points
    48
    Par défaut
    merci pour vos réponses, je n'ai pas pu lire vos messages plus tôt.
    J'ai récupéré donc des Node.

    Le pb c'est que dans mon cas mes xml contiennent la ligne qui décrit la dtd

    <!DOCTYPE eip-part-version PUBLIC "-//KLUWER//WKNL-KL-DTD-PUMAEIP-PARTVERSION//NL" "eip-part-version.dtd">


    Si j'enlève cette ligne de mon xml ça marche nickel, je récupère bien mes noeuds sinon j'ai une exception

    javax.xml.xpath.XPathExpressionException : java.io.FileNotFoundException : D:\wkeditions\WKNL\KL\domain\eip-part-version.dtd (Le fichier spécifié est introuvable)

    Effectivement cette dtd n'est pas présente sur mon serveur et pas possible de supprimer ou modifier cette ligne de mon xml.

    J'ai besoin que de parser le xml.

    Comment faire pour ne pas prendre en compte la ligne
    <!DOCTYPE eip-part-version PUBLIC "-//KLUWER//WKNL-KL-DTD-PUMAEIP-PARTVERSION//NL" "eip-part-version.dtd">
    Est il possible de supprimer les lignes contenant <!DOCTYPE de l'inputstream obtenu du fichier, sans toucher au xml?

    ou bien y a t il un moyen de contourner l'exception,

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par antigone
    Comment faire pour ne pas prendre en compte la ligne <!DOCTYPE
    Il faut désactiver la validation de ton parser. Pour cela tu as la methode fabrique.setFeature( String featurename, boolean value)

    Le nom de la "feature" dépend de ton parser. Tu peux essayer ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    fabrique.setFeature("http://xml.org/sax/features/validation", false);
    ou
    fabrique.setFeature("http://apache.org/xml/features/validation/schema", false);

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

Discussions similaires

  1. faire une expression réguliere dans rechercher remplacer
    Par fred0655 dans le forum Dreamweaver
    Réponses: 15
    Dernier message: 10/07/2011, 18h49
  2. [XSLT 2.0] Evaluation d'expression mathématique dans une variable string
    Par domas_24 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 25/01/2011, 14h49
  3. Réponses: 6
    Dernier message: 04/02/2007, 09h55
  4. [Source] Evaluer une expression algébrique
    Par Delbeke dans le forum Vos contributions VB6
    Réponses: 6
    Dernier message: 22/08/2006, 11h52
  5. [XSD]Ou peut-on déclarer une grammaire XSD dans un XML?
    Par Jayceblaster dans le forum Valider
    Réponses: 1
    Dernier message: 21/08/2006, 01h12

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