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 :

Ecriture d'un fichier XML en java [DOM]


Sujet :

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

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut Ecriture d'un fichier XML en java
    Salut,
    je suis entrain d'ecrire depuis une appli Java (graphique) un fichier du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <comment>
      <text>coucou c'est moi</text>
    </comment>
    Le truc, c'est que j'aimerais obtenir maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <comment>
      <text>coucou c'est moi <a href="<a href="http://www.developpez.net">ici</a></text>" target="_blank">www.developpez.net">ici</a></text></a>
    </comment>
    Mais quand je fais ça dans mon prog java, j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <comment>
      <text>coucou c&apos;est moi &lt;a href=&quot;<a href="http://www.developpez.net&quot;&gt;ici&lt;/a&gt;></text>" target="_blank">http://www.developpez.net&quot;&gt;ici&lt;/a&gt;><.../a&gt;></text></a>
    </comment>
    Il m'interprète les quotes, les <br/>...tout quoi. Comment éviter ça ?
    Je sais que je peux créer des élément (class Element en java) <a href="">, mais faudrais que j'analyse tout ce que je saisie afin de construire ces éléments!
    y'a pas un moyen de dire qu'il faut pas interpréter les <a href>, les <br>...
    Merci
    Delphine

  2. #2
    Membre actif
    Inscrit en
    Juillet 2003
    Messages
    407
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 407
    Points : 252
    Points
    252
    Par défaut
    je ne suis pas sure mais comme s'il est en train d'interpréter la balise <text> donc ce qui est à l'interieur il le prend comme du texte ....

    essaye de la nommer autre chose exemple <letexte> et essaye si ça marche

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    J'ai essayé, que je mette n'importe quel nom de balise, quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    texteElement = doc.createElement("letexte");
    texteElement.appendChild(doc.createTextNode("<a href=\"htpp://www.google.com\">google</a>"));
    texteElement.appendChild(dataElement);
    rootElement.appendChild(texteElement);
    et que j'ecris le doc (avec OutuutFormat), j'ai au final des "<" et ">"
    interprétés...

    Y'a pas un truc pour dire qu'il faut qu'il écrive ">" et pas le code "&...;"
    Bien sur je pourrais créer des Element doc.createElement(), mais ça veut dire qu'il faut que j'analyse mon texte et créér des Element quand il faut...

    Merci quand même

  4. #4
    Membre actif
    Inscrit en
    Juillet 2003
    Messages
    407
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 407
    Points : 252
    Points
    252
    Par défaut
    mais tu fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.createTextNode("<a href=\"htpp://www.google.com\">google</a>")
    c pas du testNode que tu écris là !!!
    il faut créer un autre fils et l'ajouter ....

  5. #5
    Membre actif
    Avatar de Didier
    Profil pro
    Developper
    Inscrit en
    Mars 2002
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Developper

    Informations forums :
    Inscription : Mars 2002
    Messages : 163
    Points : 299
    Points
    299
    Par défaut
    il faut utiliser un contenu CDATA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <comment> 
      <text><![CDATA[coucou c'est moi <a href="www.developpez.net">ici</a>]]></text> 
    </comment>
    Pour plus de renseignement Forum XML

    A+

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    En faite je sais pas ce que l'utilisateur saisi dans l'interface, moi je récupére une String, donc il peut avoir du code HTML à ne pas interpréter (genre la balise <a href></a>).
    Ce que je voulais faire, c'est justement na pas analyser cette chaîne caractère et écrire sans me prendre la tête son contenu dans ma balise <text></text>....
    Mais il interprète les & > ...
    Et j'ai vu que ce sont des caractères spéciaux XML, même avec la méthode format.setNonEscapingElements(String[]) ça marche po...

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    J'ai essayé le CDATA avec format.setCDataElements(cdata);

    Le truc c'est que ce fichier XML, il est mouliné après dans du XSL, et du coup il écrit : <a href="www.google.com">google</a> au lieu de me créer un lien HTML vers google dans mon doc HTML généré.

    ce qui marche c'est vraiment d'avoir dans mon XML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <comment>
      <text><a href="www.google.com">google</a></text>
    </comment>
    En gros j'ecris ça dans du Java qui me créé un fichier XML qui est ensuite mouliné dans du XSL pour généré un lien HTML...

    c'est pas si simple....

    Merci de votre aide

  8. #8
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Points : 2 196
    Points
    2 196
    Billets dans le blog
    3
    Par défaut
    J'ai le même problème en ce moment.

    J'ai également trouvé la solution du CDATA pour insérer du HTML mais imopssible de le "décrypter" en sortie de mon XSL.

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Bah, je vais te sauver la vie
    enfin, j'espère...

    En effet, il ya 5 caractères spéciaux de balisage (",<,>,',&) qui ne passe pas dans la fonction setNonEscapingElements de la class Outputformat.
    De plus, XMLSerializer est déclarée final dans le package org.apache.xml.serialize, aucune chance donc de pouvoir étendre et de redéfinir la méthode concernée.

    J'ai moi aussi essayer avec un CDATA...mais c'est trop la misère.
    Alors, ce que j'ai fait :

    Je laisse mon API DOM écrire mon texte avec des entités HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <Comment elem="1">
       <Text>      
          &lt;img src=&quot;L:/image.gif&quot;/&gt;
       </Text>
    </Comment>
    Quand ça passe dans mon XSL et pour obtenir le résultat désiré(cad l'affichage de l'image L:\image.gif et non le texte <img src="L:/image.gif"/>) dans mon fichier généré HTML, il faut faire dans le code XSL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:text disable-output-escaping="yes">&lt;img src=&quot;L:/inthenews.gif&quot;/&gt;</xsl:text>
    Et comme résultat tu auras ton image qui s'affiche et non le texte <img...>
    Si tu met pas l'attribut disable-output-escaping, il t'affichera <img src="L:/image.gif"/> !!!

    J'ai testé ça marche.
    Dis-moi si ça roule pour toi aussi
    Delphine.

  10. #10
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Points : 2 196
    Points
    2 196
    Billets dans le blog
    3
    Par défaut
    Ok ça marche presque, mais je comprends pas un truc :

    Dans mon fichier XSL, le texte censé contenir du HTML sera affiché la-dedans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:value-of select="."/>
    Et si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:text disable-output-escaping="yes">
    		<xsl:value-of select="."/>
    </xsl:text>
    Ca ne fonctionne pas, j'ai une erreur : "la partie value-of ne peut être contenue à cet endroit.

    Donc comment faire ? Je comprends pas comment tu as pu avoir ton texte APRES la génération du fichier...

    Merci pour ton aide

  11. #11
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Points : 2 196
    Points
    2 196
    Billets dans le blog
    3
    Par défaut
    Réponse :

    1 : j'ai changé l'encodage. J'avais du windows-1252 et j'ai mis iso-8859-15

    2 : j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:value-of select="." disable-output-escaping="yes" />
    Et vala ! Donc oui Delphine, tu m'as sauvé la vie... Doublement.

    Puisqu'en fait, j'avais un problème avec le signe € et l'encodage iso-8859-15... Or la, tout à l'air de très bien fonctionner.

    Merci beaucoup

  12. #12
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Contente que ça marche pour toi aussi !

    Je peux mettre le pb résolu alors.

    Merci.


    Delphine.

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

Discussions similaires

  1. [C#]Lecture et Ecriture d'un fichier .xml
    Par debug dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/01/2006, 12h41
  2. [C#] Probleme d'écriture dans un fichier XML
    Par Joad dans le forum ASP.NET
    Réponses: 5
    Dernier message: 02/05/2005, 16h19
  3. [SAX] parser un fichier xml en Java
    Par royou dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/02/2005, 17h12
  4. [VB.NET] Ecriture d'un fichier XML
    Par Le-Cortex dans le forum ASP.NET
    Réponses: 13
    Dernier message: 28/04/2004, 12h57
  5. [DOM] est ce qu'on peut créer un fichier xml en java ?
    Par miloud dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 21/01/2004, 10h40

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