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:
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:
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:
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:
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