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