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 :

[C#] Comment désérialiser un fichier xml ?


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 208
    Par défaut [C#] Comment désérialiser un fichier xml ?
    Bonjour

    J'ai une fichier xml de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <ElementList>
             <ElementName>Toto</ElementName>
             <ElementDescription>Truc</ElementDescription>
             <ElementName>Tata</ElementName>
             <ElementDescription>Truc2</ElementDescription>
             ....
    </ElementList>
    Comment faire pour le désérializer?

    J'ai essayer avec une classe contenant un tableau ElementName et un tableau ElementDescription mais je ne récupère que le premier élément de la liste!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class ElementList
    {
          public string[] ElementName;
          public string[] ElementDescription;
    }

  2. #2
    Membre Expert Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 366
    Par défaut
    Je débute dans le XML, je fais des sérialisations, mais dans tous les exemples que j'ai pu voir, je ne pense pas que tu puisse utiliser la sérialisation vu que tu n'as qu'une seule balise <ElementList>.

    Je pense que tu dois lire le fichier élément par élément.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 208
    Par défaut
    ouaip, c'est bien ce que j'ai peur...
    si quelqu'un à une autre idée?

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    et personne parmis vous n'a eu la brillante idée d'utiliser les mécanisme de sérialisation déserialisation XML fournie par le framework ?

    si je vous dit "using System.Runtime.Serialization.Formatters.Soap;"
    ca fait pas tilt ?

    et oui figurez vous que les gens de microsoft ont bien fait les choses et ce sont amusé à developper une classe magique SoapFormatter, et oh miracle, c'est un sérialiseur/déserialiseur XML !

    Parfois il suffit d'ouvrir l'aide du framework et de tapper serialisation ou déserialisation si vous avez la doc en francais hein... est-ce si compliqué d'utiliser la doc.

    Maintenant, j'insiste sur le fait que vous devez définir la classe comme [Serializable] et aucun membre comme [NonSerialized] pour que ca marche... sinon là aussi ca marchera pas comme vous voulez.

    Enfin voila quoi. Maintenant, il faut faire attention, la sérialisation/déserialisation XML à des défauts et limitations par rapport à la sérialisation/déserialisation binaire, mais bon je vous laisse lire la doc sur la classe SoapFormatter ou BinaryFormatter pour voir les différences entre ces deux mécanismes.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 208
    Par défaut
    cinemania: tu sais lire????

    je n'ai pas parler de sérialization... mais de désérialization d'un fichier xml.
    Je n'ai pas la main sur l'architecture du fichier XML donc pour le format soap on oublie...

    mon problème c'est que je ne sais pas dans quelle architecture d'objet je peux désérializer l'architecture XML suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <ElementList>
             <ElementName>Toto</ElementName>
             <ElementDescription>Truc</ElementDescription>
             <ElementName>Tata</ElementName>
             <ElementDescription>Truc2</ElementDescription>
             ....
    </ElementList>

  6. #6
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Citation Envoyé par Troopers

    Comment faire pour le désérializer?

    J'ai essayer avec une classe ...
    Bon j'arrive un peu tard
    Tu nous donnes le schema xml d'origine ainsi que le modèle objet sensé le recevoir, mais je ne vois pas le code qui a tenté la désérialisation, comment as-tu procédé même si le resultat est insatisfaisant

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 208
    Par défaut
    Voilà le code (un peu simplifié)

    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
     
    [XmlElement(ElementName = "ElementList")]
    public class ParameterList
    {
        private string[] sNames;
        private string[] sDescriptions;
     
        [XmlElement(ElementName = "ElementName")]
        public string[] Names
        {
            get{return sNames;}
            set{sNames = value;}
        }
     
        [XmlElement(ElementName = "ElementDescription")]
        public string[] Descriptions
        {
            get{return sDescriptions;}
            set{sDescriptions = value;}
        }
    }
     
    public static void DeserializeObject(string sFilePath)
    {
        System.IO.FileStream fsStream = new System.IO.FileStream(sFilePath,
     System.IO.FileMode.Open);
        System.Xml.Serialization.XmlSerializer xsSerializer = new
      System.Xml.Serialization.XmlSerializer(typeof(ParameterList));
        ParameterList oParameterList = (ParameterList) xsSerializer.Deserialize
    (fsStream);
        fsStream.Close();
    }

Discussions similaires

  1. [XSLT] comment afficher toutes les données d'un fichier xml ?
    Par bwwilly dans le forum XSL/XSLT/XPATH
    Réponses: 19
    Dernier message: 27/06/2007, 16h21
  2. [Encoding] Comment stocker les caractères arabes dans un fichier XML?
    Par merci_tous dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 13/02/2007, 16h57
  3. Réponses: 2
    Dernier message: 16/05/2006, 09h06
  4. Comment Lire une valeur à partir d'un fichier XML en C++?
    Par Hamdi Hedhili dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 13/12/2005, 10h09

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