Chúng tôi có một lược đồ XSD với một bản tuyên bố như thế này:xsd: danh sách các kiểu tùy chỉnh được tạo ra vào Danh sách <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>
Sau đó, tôi muốn có một danh sách các loại này trong một lớp Java được tạo ra:
<xsd:complexType name="SomeMessage">
...
<xsd:attribute name="customIds" use="optional">
<xsd:simpleType>
<xsd:list itemType="customId" />
</xsd:simpleType>
</xsd:attribute>
...
</xsd:complexType>
Nhưng trường customIds
, vì một số lý do, được tạo dưới dạng List<String>
.
tôi đoán, xsd:sequence
có thể được sử dụng thay cho xsd:list
, nhưng SomeMessage
đã có một xsd:choice
, và như xa như tôi có được, đó là bất hợp pháp để có xsd:sequence
trong khai báo tương tự.
Cảm ơn!
Cảm ơn bạn đã trả lời của bạn! Trên thực tế, tôi đang cố gắng để không nhận được một 'Danh sách', nhưng một 'Danh sách '. Tôi đang sử dụng JAXB 2.2. –
gregvonbautt
Đối với 'xsd: sequence' và' xsd: choice', ý tôi là như sau: ' ... xsd: sequence> xsd: complexType>' Đối với loại khai báo này, thông báo "Chuỗi phần tử" không hợp lệ, thất lạc hoặc xảy ra quá thường xuyên ". –
gregvonbautt
Tôi đã cập nhật để giải quyết các giải thích của bạn. Để có lựa chọn và chuỗi, bạn cần trình bao bọc trình tự như sau: ... ... . Thuộc tính không thể được đặt bên trong một nhóm mô hình (chuỗi/lựa chọn/tất cả), chúng sống bên ngoài nó. Nếu bạn muốn sử dụng các phần tử thay vì một thuộc tính dựa trên một danh sách xsd:, thì bạn sẽ sử dụng trình tự lồng nhau trong ví dụ của tôi để thực hiện nó. –