Bonjour ,
J'essaye de sérialiser une instance d'une classe partielle (issue d'xsd) avec le xmlserializer, mais la sérialisation ignore les attributs de type long et datetime de mon instance.
Ci joint le code de la classe partielle "contact".
Voilà la fonction et le programme de sérialisation :
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138 /// <remarks/> [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] public partial class contact { private long contactidField; private bool contactidFieldSpecified; private long versionField; private bool versionFieldSpecified; private System.DateTime updatedtField; private bool updatedtFieldSpecified; private string firstnameField; private string lastnameField; /// <remarks/> [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] public long contactid { get { return this.contactidField; } set { this.contactidField = value; } } /// <remarks/> [System.Xml.Serialization.XmlIgnoreAttribute()] public bool contactidSpecified { get { return this.contactidFieldSpecified; } set { this.contactidFieldSpecified = value; } } /// <remarks/> [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] public long version { get { return this.versionField; } set { this.versionField = value; } } /// <remarks/> [System.Xml.Serialization.XmlIgnoreAttribute()] public bool versionSpecified { get { return this.versionFieldSpecified; } set { this.versionFieldSpecified = value; } } /// <remarks/> [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, DataType = "date")] public System.DateTime updatedt { get { return this.updatedtField; } set { this.updatedtField = value; } } /// <remarks/> [System.Xml.Serialization.XmlIgnoreAttribute()] public bool updatedtSpecified { get { return this.updatedtFieldSpecified; } set { this.updatedtFieldSpecified = value; } } /// <remarks/> [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] public string firstname { get { return this.firstnameField; } set { this.firstnameField = value; } } /// <remarks/> [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] public string lastname { get { return this.lastnameField; } set { this.lastnameField = value; } } }
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
25 static void Main(string[] args) { contact c = new contact(); c.contactid = 1; c.version = 1; c.updatedt = DateTime.Now; c.firstname = "Alain"; c.lastname = "Delon"; Serialize(c, "mythomane.xml"); } static void Serialize(contact c, String filename) { using (FileStream fsStream = new FileStream(filename, FileMode.Create)) { XmlSerializer xsSerializer = new System.Xml.Serialization.XmlSerializer(typeof (contact)); xsSerializer.Serialize(fsStream , c); } }
le fichier mythomane.xml est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?xml version="1.0"?> <contact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <firstname>Alain</firstname> <lastname>Delon</lastname> </contact>
Je sais pas comment faire pour avoir tous les attributs.
J'ai tombé sur ça en cherchant à résoudre le problème mais le problème persiste après le remplacement de unqualified par Qualified (solution de contournement proposée) . cf: http://support.microsoft.com/kb/327071
Merci d'avance
Naou
Partager