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�cup�rer l'int�gralit� du contenu d'une balise


Sujet :

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

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par d�faut R�cup�rer l'int�gralit� du contenu d'une balise
    Bonjour � tous,

    Via DOM, Je souhaiterais r�cup�rer l'int�gralit� du contenu d'une balise (pas uniquement le texte), mais malgr� mes recherches, je ne trouve pas la solution.

    Pour illustrer mon propos :
    Code XML : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <geometrie>
    <a>
    <b>
    <c>
    xxxxx
    </c>
    </b>
    <d>
    <e>
    yyyyyyy
    </e>
    </d>
    </a>
    </geometrie>

    Et je souhaiterais r�cup�rer sous forme de texte
    Code XML : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <a>
    <b>
    <c>
    xxxxx
    </c>
    </b>
    <d>
    <e>
    yyyyyyy
    </e>
    </d>
    </a>

    Pour le moment j'ai r�cup�r� mon Element <geometrie> mais impossible d'aller plus loin.
    Autre chose � savoir, la pr�sence des balises n'est pas garantie : <d> et <e> ne sont pas n�cessairement pr�sentes.

    En vous remerciant par avance pour votre aide

  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
    Hello,

    le DOM fourni avec Java n'est pas super-super pratique. Mais bon on va voir �a.

    Donc, de ce que tu nous en dit, tu as r�cup�r� l'�l�ment <geometrie>, donc tu as quelque chose du genre :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Element geometrie = obtenirGeometrie();
    Maintenant il s'agit d'obtenir <a>.

    les �l�ments ont une m�thode getElementsByTagName() qui... Fait exactement ce qu'elle dit qu'elle fait. On va s'en servir pour r�cup�rer tous les �l�ments <a> contenus dans <geometrie>. Il n'y en a qu'un seul, donc en fait on va se contententer de r�cup�rer le premier :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    Element a = (Element)geometrie.getElementsByTagName("a").item(0);
     
    // verifier un peu
    System.out.println(a.getTagName());
    Ok donc on a r�cup�r� notre �l�ment <a>.

    Reste � voir comment retransformer tout �a en texte, avec tout son contenu.

    Avec le DOM fourni avec Java, pour retransformer un Document en fichier XML, on doit passer par la classe Transformer (mais h�las Optimus Prime ne vient jamais nous aider.)
    Eh bien �a marche aussi pour transformer un seul �l�ment en texte.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    Transformer transformer = TransformerFactory.newInstance().newTransformer();
    transformer.transform(new DOMSource(a), new StreamResult(System.out));
    Faute d'une autre instruction, notre transformer transforme juste du XML d'une source � une destination sans y apporter de modification.
    DOMSource(a) indique que le truc � "transformer" c'est notre �l�ment <a> pr�c�demment r�cup�r�.
    StreamResult(System.out) indique StreamResult donc �crire la source sous forme de XML dans un flux de destination. Et ce flux c'est System.out, c'est � dire la sortie standard.

    On obtient ceci:

    Code XML : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="UTF-8"?><a>
    <b>
    <c>
    xxxxx
    </c>
    </b>
    <d>
    <e>
    yyyyyyy
    </e>
    </d>
    </a>

    Il y a la d�claration XML <?xml version="1.0" encoding="UTF-8"?>. Cela ne t'arrange peut-�tre pas.

    Pour s'en d�barrasser on va configurer un peu le transformer avant d'appeler transform() :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
    Et l� on obtient exactement ce que tu avais demand�.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par d�faut
    Je ne pouvais demander mieux
    Un grand merci thelvin

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [SAX] R�cup�rer le contenu d'une balise imbriqu�e
    Par chouxe dans le forum Format d'�change (XML, JSON...)
    R�ponses: 7
    Dernier message: 05/01/2007, 13h58
  2. R�cup�rer le contenu d'une balise en php
    Par Mister Nono dans le forum Langage
    R�ponses: 2
    Dernier message: 11/10/2006, 19h52
  3. R�ponses: 12
    Dernier message: 20/09/2006, 09h31
  4. [Tableaux] R�cup�rer le contenu d'une balise HTML
    Par StarNab dans le forum Langage
    R�ponses: 2
    Dernier message: 01/09/2006, 12h38
  5. [DOM] R�cup�rer le contenu d'une balise donn�e
    Par mimi31110 dans le forum Format d'�change (XML, JSON...)
    R�ponses: 4
    Dernier message: 26/06/2006, 23h46

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