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> { } }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 [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'aimerai que les données soient organisées comme cela :
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>
- 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
D'avance merci pour votre aide
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>
Partager