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 :

Extraire contenu balise XMLNS


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 96
    Par défaut Extraire contenu balise XMLNS
    Bonjour,

    Je possède un fichier .XML dans lequel se trouve une balise de la forme:

    <ds:Object> blabla </ds:object>

    J'aimerai extraire le contenu de cette balise pour le stocker dans un string dans mon programme en java.
    j'ai deja essayé avec les méthodes trouvées sur ce forum a savoir xpath et jdom mais l'erreur suivante me bloque:

    "The prefix "ds" for element "ds:Object" is not bound."

    Comment extraire simplement le contenu de la balise <ds:object> ??

    merci par avance de votre réponse.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    XPath path = XPath.newInstance("//ds:object");
    path.addNamespace("ds", "le namespace correspondant");
    path.selectNodes(document);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 96
    Par défaut
    merci pour la rapidité.

    petite précision: mon fichier ne contient que:

    <ds:object> contenu </ds:object>

    Voici mon code toujours beugué:


    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
    30
    31
    32
     
                   String contenuMessage = "";
     
                    org.jdom.Document document = null ;
            try {
                /* On crée une instance de SAXBuilder */
                SAXBuilder sxb = new SAXBuilder();
                document = sxb.build(fichierASigner);
            } catch (IOException e) {
                System.out.println("Erreur lors de la lecture du fichier " + e.getMessage() );
                e.printStackTrace();
            } catch (JDOMException e){
                System.out.println("Erreur lors de la construction du fichier JDOM " + e.getMessage() );
                e.printStackTrace();
            }
     
            try {
     
                org.jdom.Element racine = document.getRootElement();
     
                XPath xpa = XPath.newInstance("//ds:object");
                xpa.addNamespace("ds", "le namespace correspondant");
              //namespace? 
     
                xpa.selectNodes(document);
     
                contenuMessage = xpa.valueOf(racine));
            }
            catch(Exception e){
                System.out.println("Erreur JDOM " + e.getMessage() );
                e.printStackTrace();
            }

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par SgtBor Voir le message
    petite précision: mon fichier ne contient que:

    <ds:object> contenu </ds:object>
    Ah bah oui mais non. Les deux points ( : ) devant le nom de la balise, c'est utilisé par la convention Namespaces in XML. C'est pour préfixer les éléments afin de les mettre dans un namespace.

    S'en servir autrement est incompatible avec Namespaces in XML. Or xPath et beaucoup d'outils XML exigent une compatibilité rigoureuse avec ça. Par conséquent, pas de compatibilité, pas de xPath.
    Et de manière générale, on paie assez cher cette incompatibilité.

    Solution : remplacer par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ds-object> contenu </ds-object>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Quoique, un xpath du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "/*[name()='ds:object']"
    devrait marcher... Mais honnêtement, il vaut mieux devenir compatible avec Namespace in XML.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 96
    Par défaut
    salut,
    Merci de tes réponses.

    Mon problème est que ce fichier est généré automatiquement, donc je n'ai pas le choix de mettre "ds-object"... je vais essayer avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     "/*[name()='ds:object']"

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Générer ça automatiquement, c'est quand même pas bien malin. Ou alors, peut-être que ce n'est pas supposé être du XML ?

    À mon avis tu ne nous dit pas tout, essayant de "simplifier" quelque chose que tu ne comprends pas. Ça, ou alors c'est l'auteur de la génération automatique, qui a fait n'importe quoi.

    Enfin...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. extraire une balise d'un fichier xml
    Par sokles dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 14/05/2007, 15h45
  2. Récupérer contenu balises HTML
    Par Sopra dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/04/2007, 16h45
  3. [XSLT] Extraire certaines balises d'un document XML
    Par Wookai dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 10/04/2007, 09h09
  4. [js] suppression du contenu balise script
    Par TERRIBLE dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/02/2007, 08h45
  5. [XSLT] problème contenu balise / text
    Par zelastwarrior dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 18/12/2006, 11h25

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