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 :

Désérilization XML de deux classes presque identique


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Par défaut Désérilization XML de deux classes presque identique
    Bonjour
    J'ai deux fichiers XML qui se ressemblent, mais qui a un noeud en plus (le noeud groupe). Et je souhaite les désérialiser avec la même classe.

    Est-ce possible ?

    Je m'en fiche de perdre les donnés de "groupe"

    Il me faut juste ma collection de "MonItem"

    Xml1:
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <Properties>
      <Property Name="Voiture"/>
      <Property Name="Maison"/>
    </Properties>

    Xml2:
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <Properties>
      <Groupe Name="Divers">
        <Property Name="Poisson" />
      </Groupe>
      <Groupe Name="Maison">
        <Property Name="Porte" />
        <Property Name="Chambre" />
      </Groupe>
    </Properties>

    Ma classe:
    Code C# : 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
    [XmlType(TypeName = "Properties"), Serializable]
        public class MaCollection : CollectionBase
        {
           public int Add(MonItem value)
            {
                return (List.Add(value));
            }
    //Tout les autres fonctions pour une collection
        }
     
    [Serializable]
        [XmlType("Property")]
        public class MonItem
        {
            [XmlAttribute("Name")]
            public String Name;
        }

    Merci

  2. #2
    Membre émérite Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Par défaut
    Si il y a une notion d’héritage ou d'interface entre les deux classes sérialise alors oui il n'y aura pas de problème, tout dépendra du type qui est sérialisé/désérialisé....

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Par défaut
    Justement j'ai qu'une seule classe.
    Et il faut que je désérialise ces deux XML avec la même classe.

  4. #4
    Membre émérite Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Par défaut
    Soit les deux classes on une interface identique et tu sérialise cette interface soit il y a une notion d’héritage et tu sérialise la classe la moins dérivée.

    Il existe d'autre solution comme créer son propre sérialiser ou alors passer par un objet "Passe partout" et faire de la recopie de propriétés mais c'est plus contraignant ou moins propre, le plus simple étant d'avoir une interface commune

  5. #5
    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
    Non c'est pas possible, à moins d'implémenter manuellement IXmlSerializable

  6. #6
    Membre émérite Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Par défaut
    ok mon smartphone n'affichait pas tout le code XML, je n'avais pas compris la question dans ce sens, oui effectivement c'est pas possible.

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

Discussions similaires

  1. Xml avoir deux balise identique au meme niveau/noeud ?
    Par zeonnix95 dans le forum Général Python
    Réponses: 3
    Dernier message: 24/08/2010, 12h00
  2. Deux lignes presques identiques
    Par franco263 dans le forum Requêtes
    Réponses: 8
    Dernier message: 13/06/2008, 13h16
  3. XML et deux DTD
    Par mamouth2005 dans le forum Valider
    Réponses: 5
    Dernier message: 22/09/2005, 08h13
  4. [VB.NET]Reflexion lister les membres d'une classe ...presque
    Par lucie.houel dans le forum ASP.NET
    Réponses: 19
    Dernier message: 20/09/2005, 13h49
  5. Réponses: 5
    Dernier message: 17/08/2005, 12h40

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