Bonjour je suis devant un petit probleme xml / objet. Est il possible de faire de l heritage en xml. Je m'explique, je dispose d'un objet "data" qui contient une liste de "field". L'objet "field" est abstrait et peut etre specialisé en stringfield ou numeriquefield.
J utilse l'API Castor pour generer le model objet à partir d'un fichier xml, . J'aimerais conserver cette idee d'heritage de telle maniere à avoir le fichier xml suivant:
Fichier xml
Code class
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <data id="data1"> <numericfield value="FIELD1" /> <simplefield value="FIELD2" /> <numericfield value="FIELD3" /> <simplefield value="FIELD4" /> </data>
Code xsd
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 public class Data(){ List <Field> fieldList; public Data(){ fieldList = new ArrayList<Field>() } } public class abstract Field(){ public Field super(); } } public class SimpleField extends Field{ public SimpleField super(); } } public class NumericField extends Field{ public NumericField super(); } }
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 <xs:element name="data"> <xs:annotation> <xs:documentation>A set</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element ref="field" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required" /> </xs:complexType> </xs:element> <xs:element name="stringfield"> <xs:complexType> <xs:attribute name="value" type="xs:string" /> </xs:complexType> </xs:element> <xs:element name="numericfield"> <xs:complexType> <xs:attribute name="value" type="xs:string" /> <xs:attribute name="valuenum" type="xs:float" /> </xs:complexType> </xs:element> <xs:element name="field">?????
Partager