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

  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

  8. #8
    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
    Ce n'est pas supposé être du xml. C'est un message de type HL7.

    wow du calme, j'essaye de comprendre un code trés lourd et trés long. Dans cette partie du code, je dois recupérer le contenu de ce fichier Hl7 pour le mettre dans un autre fichier XMLsignature.

  9. #9
    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
    Chose rare, je suis en fait très calme. Mais je ne comprends vraiment plus rien. Réexplique-toi depuis le début :

    - Pourquoi cette question est-elle dans le forum Java/XML ?
    (Tu viens de dire "ce n'est pas censé être du XML.")

    - À quoi ressemble le document qui contient <ds:object> contenu </ds:object> ?
    (Tu as dit, "il ne contient que ça." Littéralement ? C'est un fichier texte dont le premier caractère est le < de <ds:object> et le dernier caractère est le > de </ds:object> ?)

    - En quoi le fait que tu bosses sur un code très complexe et très gros, influence sur le document en question et la manière d'en extraire les données que tu cherches ?
    (Parce que bon, a priori on s'en tape, quoi.)

    - Pourquoi diable le titre parle-t-il de xmlns ?
    (Car on n'a pas abordé ce point, et il est un peu contradictoire avec le fait qu'il n'y ait pas de namespace, et de ne pas savoir ce qu'est un namespace.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    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
    problème résolu: j'ai modifié le programme qui génére le fichier avec le ds:object du coup je n'ai plus la balise ds:object ch*ante et j'ai pu extraire le contenu du fichier avec un bon vieux filereader.
    par contre, j'ai starté un nouveau topic dans cette meme section avec un nouveau probleme :/.

    merci beaucoup de tes conseils thelvin.

+ 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