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 :

[XML] désérialization d'un XML


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 67
    Par défaut [XML] désérialization d'un XML
    Bonjour,

    J'ai un xml qui a une tête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    <A>
         <B>valueofB</B>
         <C id="x">valueofC</C>
    <A>
    J'aimerai le mettre dans un object :

    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
    
    [XmlRoot(ElementName="A")]
    public class A
    {
         [XmlElement(ElementName = "B")]
         public string B { get; set; } 
    
         public CType C { get; set; }  
    }
    
    [XmlRoot(ElementName="C")]
    public class CType
    {
         [XmlAttribute(AttributetName =  "id")]
         public string Id { get; set; } 
    
         [XmlElement(ElementName = "C")]
          public string RealC { get; set; } 
    }
    Comme vous voyez je veux faire de C une classe à part.

    Mais avec un tel code, lors de la désérialization du xml A.C.RealC est null.

    Comment dois-je faire pour avoir C dans un class à part et réussir à implémenter RealC avec ça valeur ?

    Merci

    PS: voici le code pour la désérialization
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    XmlSerializer xmlSerializer =  new XmlSerializer(typeof(A));
    
    using (MemoryStream memoryStream =  new MemoryStream(StringToUTF8ByteArray(xml)))
    {
             return (A)xmlSerializer.Deserialize(memoryStream);
    }

  2. #2
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Je n'ai pas la réponse à ta question. Mais tu pourrais essayer de créer manuellement des instances de A avec leur C dedans, les sérialiser, et voir ce que ça donne, pour comparer avec ce à quoi tu t'attends.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    L'attribut pour RealC n'est pas bon, il faut utiliser XmlText
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          [XmlText]
          public string RealC { get; set; }

    Sinon il va sérialiser comme ça :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <A>
         <B>valueofB</B>
         <C id="x">
             <C>valueofC</C>
         </C>
    <A>

    (et donc désérialiser selon ce schéma)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 67
    Par défaut
    Merci les gars.

    je vous met la réponse ici :

    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
    [XmlRoot(ElementName="A")]
        public class A
        {
            [XmlElement(ElementName="B")]
            public string B { get; set; }
    
            [XmlElement(ElementName = "C")]
            public TypeC C { get; set; }
        }
    
        [XmlRoot(ElementName = "C")]
        public class TypeC
        {
            [XmlAttribute(AttributeName="id")]
            public string Id { get; set; }
            [XmlText]
            public string RealC { get; set; }
        }
    Merci Encore

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/07/2006, 08h47
  2. Réponses: 2
    Dernier message: 07/01/2005, 20h40
  3. [ JSP ][ XML ] continuer un fichier XML
    Par zozolh2 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 26/07/2004, 11h48
  4. [xml]manipuler des données xml sous Oracle9i
    Par crazy dans le forum SQL
    Réponses: 7
    Dernier message: 28/02/2004, 11h40
  5. [XML][XSL][FOP] transformation xml avec fop
    Par Le Marlou dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 05/12/2003, 16h58

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