Abbiamo uno schema XSD con una dichiarazione come questa:xsd: elenco di tipo personalizzato è generato nella Lista <String>
<xsd:simpleType name="customId">
<xsd:annotation>
<xsd:appinfo>
<jaxb:javaType name="com.company.identifiers.CustomId" parseMethod="fromString" printMethod="toString"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:restriction base="xsd:int" />
</xsd:simpleType>
Poi, voglio avere un elenco di questo tipo in una classe Java generato:
<xsd:complexType name="SomeMessage">
...
<xsd:attribute name="customIds" use="optional">
<xsd:simpleType>
<xsd:list itemType="customId" />
</xsd:simpleType>
</xsd:attribute>
...
</xsd:complexType>
Ma il campo customIds
, per qualche ragione, è generato come List<String>
.
immagino, xsd:sequence
potrebbe essere usato al posto di xsd:list
, ma SomeMessage
ha già un xsd:choice
, e per quanto ho capito, è illegale avere xsd:sequence
nella stessa dichiarazione.
Grazie!
Grazie per la risposta! In realtà, sto cercando di non ottenere un 'Elenco', ma un 'Elenco '. Sto usando JAXB 2.2. –
gregvonbautt
Per quanto riguarda 'xsd: sequence' e' xsd: choice', voglio dire quanto segue: ' ... xsd: sequence> xsd: complexType>' Per questo tipo di dichiarazione, si dice che "la sequenza degli elementi" non è valida, è fuori posto o si verifica troppo spesso. ". –
gregvonbautt
Ho aggiornato per gestire i tuoi chiarimenti. Per avere una scelta e una sequenza, è necessario un wrapper di sequenza come questo: ... ... . Gli attributi non possono essere inseriti all'interno di un gruppo di modelli (sequenza/scelta/tutti), vivono al di fuori di esso. Se si desidera utilizzare elementi anziché un attributo basato su una lista xsd :, si utilizzerà la sequenza nidificata nel mio esempio per implementarla. –