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 :

Serialisation XML de données contenant un dictionnaire


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 46
    Par défaut Serialisation XML de données contenant un dictionnaire
    Bonjour,

    Je souhaite enregistrer des données (contenant un dictionnaire) dans un fichier xml.
    Pour ce faire (après des essais infructueux avec Linq to xml), j'utilise le DataContractSerializer

    J'ai une classe d'inventaire contenant
    - une réference (numéro d'inventaire)
    - et une liste d'Item(s) dans un dictionnaire (besoin d'une clef)
    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
     
        [DataContract(Name = "Inventory")]
        public class Inventory
        {
            [DataMember(Name = "ref")]
            public string Ref { get; set; }
     
            [DataMember(Name = "items")]
            public Dico Items { get; set; }
     
            [CollectionDataContract
                (Name = "items",
                ItemName = "item",
                KeyName = "Id",
                ValueName = "Infos")]
            public class Dico : Dictionary<string, Item> { }
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        [DataContract]
        public class Item  {
            [DataMember(Name = "Id")]
            public string Id { get; set; }
            [DataMember(Name = "info1")]
            public string Info1 { get; set; }
            [DataMember(Name = "info2")]
            public string Info2 { get; set; }
            [DataMember(Name = "info3")]
            public string Info3 { get; set; }
        }
    J'obtiens le fichier suivant
    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
     
    <Inventaire xmlns="http://schemas.datacontract.org/2004/07/..." xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    	<items>
    		<item>
    			<Id>Item A</Id>
    			<Infos>
    				<Id>Item A</Id>
    				<info1>Info 1 - Item A</info1>
    				<info2>Info 2 - Item A</info2>
    				<info3>Info 3 - Item A</info3>
    			</Infos>
    		</item>
    		<item>
    			<Id>Item B</Id>
    			<Infos>
    				<Id>Item B</Id>
    				<info1>Info 1 - Item B</info1>
    				<info2>Info 2 - Item B</info2>
    				<info3>Info 3 - Item B</info3>
    			</Infos>
    		</item>
    	</items>
    	<ref>A-2389-P</ref>
    </Inventaire>
    J'aimerai que les données soient organisées comme cela :
    - suppression (remontée) du noeud <Infos>
    - Id comme attribut du noeud <item>
    - le noeud <ref> au début du fichier xml et non plus à la fin
    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
     
    <Inventaire xmlns="http://schemas.datacontract.org/2004/07/..." xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    	<ref>A-2389-P</ref>
    	<items>
    		<item Id="Item A">
    			<info1>Info 1 - Item A</info1>
    			<info2>Info 2 - Item A</info2>
    			<info3>Info 3 - Item A</info3>
    		</item>
    		<item Id ="Item B">
    			<info1>Info 1 - Item B</info1>
    			<info2>Info 2 - Item B</info2>
    			<info3>Info 3 - Item B</info3>
    		</item>
    	</items>
    </Inventaire>
    D'avance merci pour votre aide

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 41
    Par défaut
    Salut.

    L'attribut DataMember possède une propriété Order qui pourrait peut être t'aider.

    Cordialement.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 46
    Par défaut
    Bonjour,

    Merci pour ta réponse.
    Effectivement, cette propriété permet bien d'ordonner les noeuds.

    Reste donc le problème de l'attribut

Discussions similaires

  1. Talend Base de données contenant du XML dans chaque ligne
    Par glorktar dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 12/11/2014, 18h32
  2. [XML-XSLT] Données dans un tableau
    Par Hoegaarden dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 10/12/2004, 15h51
  3. [DOM] [Package] serialisation XML
    Par Overflow64 dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 19/10/2004, 16h43
  4. Création d'une base de données contenant des images
    Par gandalf_le_blanc dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 16/06/2004, 15h29
  5. [Concept][Sérialisation] XML ou serializable
    Par christopheJ dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 03/06/2004, 13h11

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