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

Framework .NET Discussion :

Sérialisation en XML d'objet C# - problème de caractères de contrôle


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3
    Par défaut Sérialisation en XML d'objet C# - problème de caractères de contrôle
    Bonjour,
    Je bute sur un petit problème de sérialisation : l'objet que je doit sérialiser contient des propriétés dont les valeurs sont renseignées par un autre système, via la base de données, ce qui fait que je n'ai aucun contrôle sur les données reçues.
    Il arrive parfois que ces données contiennent des caractères de contrôle (invalides pour la génération du fichier XML) :
    - System.ArgumentException: '', hexadecimal value 0x1F, is an invalid character.

    Si je mets la propriété XmlWriterSettings.CheckCharacters = false, le fichier XML se génère mais le caractère de contrôle est remplacé par  :
    <AdressePatient>Bern-Zürich&#x1F;-Strasse 38</AdressePatient>

    ... et là, la désérialisation ne fonctionne pas non plus pour la même raison citée plus haut.

    Y-a-t-il un moyen de supprimer ces caractères indésirables dans un objet avant la sérialisation ?

    Merci pour votre aide.

    Marc

  2. #2
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    A voir si c'est une possibilité dans ton cas, mais DataContractSerializer est souvent bien plus puissant que XmlSerializer :

    https://msdn.microsoft.com/en-us/library/bb675198.aspx

  3. #3
    Membre très actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 218
    Par défaut
    Bonjour

    Un contournement est proposé ici, mais il n'est pas "universel" : il impose l'addition d'une propriété pour chaque propriété en CData.

    http://stackoverflow.com/questions/1...-xmlserializer

    A noter que le code dans le setter de l'exemple supra est superflu : la déserialisation de cdata est gérée sans problème par le XmlSerializer.
    Donc, il y a juste le code du getter à faire.

  4. #4
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Tu pourrai simplement processer ton object avant de le serializer (simple replace) avant de serializer ton object en XML non? Qu'est-ce qui empeche ca?

  5. #5
    Membre très actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 218
    Par défaut
    Citation Envoyé par Alain Defrance Voir le message
    Tu pourrai simplement processer ton object avant de le serializer (simple replace) avant de serializer ton object en XML non? Qu'est-ce qui empeche ca?
    Quel intérêt ?

  6. #6
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Citation Envoyé par François M. Voir le message
    Quel intérêt ?
    Avoir un object serializable vers XML?

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

Discussions similaires

  1. Problème transformation xml en Objet via xslt
    Par lavoyech dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 24/06/2015, 17h16
  2. Sérialisation et désérialisation de fichier XML en objet
    Par marooned dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 01/08/2012, 10h55
  3. [XStream] Sérialiser un conteneur d'objet java en xml
    Par nitikhor dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 19/03/2012, 18h00
  4. La sérialisation en XML d'un Objet partiellement chargé (JPA)
    Par mesios dans le forum Persistance des données
    Réponses: 2
    Dernier message: 22/05/2008, 11h45
  5. Convertir un objet non sérialisable en XML
    Par netdoor.fr dans le forum Persistance des données
    Réponses: 10
    Dernier message: 14/03/2007, 14h08

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