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

C# Discussion :

[Sérialisation] Sérialiser un champs en CDATA


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de d1g-2-d1g
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 127
    Par défaut [Sérialisation] Sérialiser un champs en CDATA
    Bonjour,

    afin d'afficher chacun des éléments d'une liste d'objets, j'ai rendu ma classe d'objet sérialisable, ainsi que ma liste et j'applique une transformation XSLT à cette liste.

    Mon problème est qu'un des champs de ma classe est de type "string" et contient du code HTML. Je veux que ce code HTML soit interprété lors de l'affichage hors il ne l'ai pas (le code HTML est affiché dans ma page).

    Cela est du au fait que le code HTML de mon champs est encodé au moment de la sérialisation (la balise "<div>" devient alors "&lt;div&gt;") ce qui est tout à fait logique pour ne pas avoir de confusion avec les balises représentant mes champs.

    La solution approprié serait donc de faire en sorte que mon champs soit sérialisé avec la balise CDATA, ainsi je pourrais garder les balises HTML de mon champs intactes.

    Quelqu'un connait-il le moyen de faire en sorte qu'un champs d'un classe soit sérialisé avec CDATA au lieu d'être encodé ?

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Par défaut
    Salut

    Je n'ai aucune idee du comportement de la serialisation dans ce cas

    Mais tu peux tenter deux choses avec les attributs:

    Rendre ta propriete contenant le texte HTML non serialisable et creer un nouveau champ qui rajouterai CDATA uniquement pour la serialisation

    Jouer avec la propriete a serialiser, en modifiant son nom ou son type. Lors de la serialisation, au lieu que ta prop se nomme "monchapHTML" tu le renomme DIV

    A tester

  3. #3
    Membre confirmé Avatar de d1g-2-d1g
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 127
    Par défaut
    Citation Envoyé par Piotrek
    Rendre ta propriete contenant le texte HTML non serialisable et creer un nouveau champ qui rajouterai CDATA uniquement pour la serialisation
    Oui mais dans ce cas, "<![CDATA[blabla]]>" deviendra "&lt;![CDATA[blabla]]&gt;" donc ca ne résoud pas mon problème...

    En tout cas je me suis apperçu en testant que le fait de mettre entre CDATA mon code HTML ne change rien au fait que ce code HTML est affiché lors de la transformation XSLT au lieu d'être interprété. Cependant la réponse à cette question m'interesse toujours.

    Citation Envoyé par Piotrek
    Jouer avec la propriete a serialiser, en modifiant son nom ou son type. Lors de la serialisation, au lieu que ta prop se nomme "monchapHTML" tu le renomme DIV
    Je ne vois pas ou tu veux en venir

    En tout cas merci pour ton aide...

  4. #4
    Membre Expert
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Par défaut
    Donc j'ai mal compris le pb, j'ai jamais serialise de l'HTML

    Pour la deuxieme solution l'idee etait de bricoler le nom de ta propriete en un tag HTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [XmlElement(ElementName = "DIV")]
    public String monHTML;
    Mais effectivement cela ne resoudera rien puisque tout le code HTML est transforme (si j'ai bien compris)
    A mon avis la seule solution pour pas detruire le format HTML est de creer ta propre serialisation pour ta classe en implementant Iserializable

    Dans ce cas, losrque la serialisation a lieu, tu as plus de controle sur la serialisation de chaque membre de ta classe

Discussions similaires

  1. [JAXB] Sérialisation avec JAXB et des éléments CDATA
    Par bernidupont dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 26/03/2013, 17h41
  2. [2.x] Formulaire et sérialisation de champs
    Par thomm543 dans le forum Symfony
    Réponses: 6
    Dernier message: 06/11/2012, 14h08
  3. sauvegarde sérialisée manuel de champs de bitfields
    Par Benoit_T dans le forum Débuter
    Réponses: 2
    Dernier message: 16/06/2009, 12h00
  4. [C#/XML]Comment obtenir une sérialisation CDATA ?
    Par malbaladejo dans le forum C#
    Réponses: 5
    Dernier message: 20/05/2008, 16h48
  5. Perte de CDATA lors de la sérialisation
    Par snopims dans le forum C#
    Réponses: 1
    Dernier message: 20/05/2008, 16h01

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