Bonjour,
J'ai essayé de trouver un intitulé de post "explicite". Je ne le trouve pas clair mais je ne sais pas comment le dire "rapidement".
Bref,
Je dois générer un fichier XML basé sur un XSD. Jusque là rien d'anormal.
Je m'appuie souvent sur le "tuto" de Thomas Levesque sur la sérialisation XML mais la je ne trouve pas de solution.
Voici ce qui me pose problème:
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <xs:complexType name="Period_Type"> <xs:sequence> <xs:element name="Year" type="enoss:Year_Type"/> <xs:choice> <xs:element name="Quarter" type="Quarter_Type"/> <xs:element name="Month" type="Month_Type"/> </xs:choice> </xs:sequence> </xs:complexType>
Ou Quarter_Type et Month_Type sont des énumérations que voici:
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <xs:simpleType name="Quarter_Type"> <xs:restriction base="xs:int"> <xs:enumeration value="1"/> <xs:enumeration value="2"/> <xs:enumeration value="3"/> <xs:enumeration value="4"/> </xs:restriction> </xs:simpleType>
Code XML : 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 <xs:simpleType name="Month_Type"> <xs:restriction base="xs:string"> <xs:enumeration value="01"/> <xs:enumeration value="02"/> <xs:enumeration value="03"/> <xs:enumeration value="04"/> <xs:enumeration value="05"/> <xs:enumeration value="06"/> <xs:enumeration value="07"/> <xs:enumeration value="08"/> <xs:enumeration value="09"/> <xs:enumeration value="10"/> <xs:enumeration value="11"/> <xs:enumeration value="12"/> </xs:restriction> </xs:simpleType>
Ceci doit donner soit ceci:
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <Period> <Year>2022</Year> <Quarter>2</Quarter> </Period>
Soit ceci:
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <Period> <Year>2022</Year> <Month>02</Month> </Period>
Je voulais partir vers un classe abstraite telle que ceci:
Que j'utilisais dans la classe de Period
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public abstract class AbstractPeriodKind { } public class QuarterPeriodKind:AbstractPeriodKind { public Quarter_Type Quarter //Désolé pour l'absence des get set sinon je ne pouvais pas créer la discussion } public class MonthPeriodKind:AbstractPeriodKind { public Month_Type Month //Désolé pour l'absence des get set sinon je ne pouvais pas créer la discussion }
Mais à la sérialisation cela ne donne pas le résultat attendu puisque les éléments étaient doublés et imbriqués.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class Period { public int Year //Désolé pour l'absence des get set sinon je ne pouvais pas créer la discussion [XmlElement("Month", typeof(MonthPeriodKind))] [XmlElement("Quarter", typeof(QuarterPeriodKind))] public AbstractPeriodKind PeriodKind //Désolé pour l'absence des get set sinon je ne pouvais pas créer la discussion }
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <Period> <Year>2022</Year> <Quarter> <Quarter>2</Quarter> </Quarter> </Period>
Je ne vois pas trop comment écrire une valeur directement dans la balise "conteneur".
Comment feriez-vous ce genre de sérialisation?
Merci d'avance pour votre aide.
Partager