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 XML impossible


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Par défaut Sérialisation XML impossible
    Bonjour,

    j'ai un soucis de sérialisation XML.

    à la base, j'ai un fichier XSD, duquel j'ai généré les classes correspondantes avec l'outil Xsd2Code.

    Voilà l'objet qui pose souci :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
        public partial class ReferenceAbsolue {
     
            private List<ReferenceAbsolueInit> initField;
     
            //...
     
            public ReferenceAbsolue() {
                //...
                this.initField = new List<ReferenceAbsolueInit>();
            }
     
            public List<ReferenceAbsolueInit> Init {
                get {
                    return this.initField;
                }
                set {
                    this.initField = value;
                }
            }
        }
     
        public partial class ReferenceAbsolueInit {
     
            private int zoneField;
     
            private double valueField;
     
            public int Zone {
                get {
                    return this.zoneField;
                }
                set {
                    this.zoneField = value;
                }
            }
     
            [System.Xml.Serialization.XmlTextAttribute()]
            public double Value {
                get {
                    return this.valueField;
                }
                set {
                    this.valueField = value;
                }
            }
        }
    Et donc à l’exécution, lorsque je veux sérialiser mon fichier xml, j'obtiens une erreur :
    System.InvalidOperationException : Une erreur s'est produite lors de la réflexion du type 'ReferenceAbsolueInit'. Changez le type du membre XmlText 'ReferenceAbsolueInit.Value' de System.Double en chaîne ou tableau de chaines.
    ça vient de l'objet List<> ??
    Comment ça se fait qu'il ne veut pas de double?...

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Je pense que le problème vient plutôt du fait que tu utilises l'attribut [System.Xml.Serialization.XmlTextAttribute()].

    Si tu l'enlèves, ça fonctionne ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Par défaut
    Ah oui, ça marche, merci!

    Bizarre, parce que cet attribut avait été généré par l'outil...


    Bon, après j'ai une autre erreur, faut que je regarde ça de plus près...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Par défaut
    Donc maintenant, c'est cet objet qui pose souci :
    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
        public partial class Regroupements {
     
            private int nB_zonesField;
     
            private List<Tableau> table_zonesField;
     
            public Regroupements() {
                this.table_zonesField = new List<Tableau>();
            }
     
            public int NB_zones {
                get {
                    return this.nB_zonesField;
                }
                set {
                    this.nB_zonesField = value;
                }
            }
     
            [System.Xml.Serialization.XmlArrayAttribute(Order=1)]
            [System.Xml.Serialization.XmlArrayItemAttribute("Zone", IsNullable=false)]
            public List<Tableau> Table_zones {
                get {
                    return this.table_zonesField;
                }
                set {
                    this.table_zonesField = value;
                }
            }
        }
    l'erreur est la suivante :
    System.InvalidOperationException : Mise en séquence incohérente : si la propriété 'Order' est utilisée dans l'un des membres de la classe, elle est requise pour tous les membres de type partie. Définissez 'Order' de manière explicite via l'attribut personnalité XmlElement, XmlAnyElement ou XmlArray dans le membre de classe 'NB_zones'.
    Je vois pas trop où il veut en venir...
    sorry, j'y connais pas encore grand chose en sérialisation...

  5. #5
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Le message d'erreur est assez explicite pourtant Si tu utilises la propriété "Order" pour l'un des éléments, alors tu dois l'utiliser de partout. En l'occurence, il est utilisé sur la propriété Table_zones.

    Donc tu as deux solutions : soit tu le laisses, et dans ce cas tu dois le rajouter de partout au sein de la classe, soit tu l'enlèves.

    [EDIT] : Pour apprendre, n'hésite pas à jeter un oeil sur La sérialisation XML avec .NET
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Par défaut
    Oui, j'ai bien compris ça
    mais à quoi sert cet attribut? (c'est encore un truc généré par l'outil...)

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

Discussions similaires

  1. [C# 2.0] Sérialisation XML avec PCDATA
    Par stailer dans le forum C#
    Réponses: 2
    Dernier message: 07/01/2007, 22h52
  2. [KPL] Fichier xml impossible a ouvrir
    Par kurt212 dans le forum Autres langages
    Réponses: 4
    Dernier message: 05/11/2006, 17h13
  3. Problème sérialisation XML [C#]
    Par AlphonseBrown dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/04/2006, 22h58
  4. [Maven 2] Parsing XML impossible
    Par morice.ju dans le forum Maven
    Réponses: 1
    Dernier message: 20/04/2006, 12h00
  5. [VB.NET] Sérialisation XML de Collections
    Par nico-pyright(c) dans le forum Windows Forms
    Réponses: 8
    Dernier message: 15/12/2004, 15h28

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