Tôi cố gắng để unmarshall XML sau đây sử dụng JAXB:Đối phó với JAXB Collections
<Works>
<Work>
<Composers>
<Composer>
<Name>A name</Name>
</Composer>
<Composer>
<Name>A name 2</Name>
</Composer>
</Composers>
</Work>
</Works>
Tôi đã tạo ra tất cả các lớp học sử dụng XJC. Nếu tôi muốn truy cập bộ sưu tập của Nhà soạn nhạc, tôi phải thực hiện việc này:
List<Composer> composers = work.getComposers().getComposer();
Có cách nào để tôi có thể thực hiện những việc sau thay thế không?
List<Composer> composers = work.getComposers();
Tôi đánh giá cao nhu cầu đối tượng Composers khi nó xuất phát từ XML, nhưng khi giao dịch với Java, có POJO trung gian lưu trữ các bộ sưu tập có vẻ hơi dư thừa.
XSD của tôi là:
<xsd:complexType name="Works">
<xsd:sequence>
<xsd:element name="Work" type="Work" maxOccurs="unbounded" minOccurs="0"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Work">
<xsd:sequence>
<xsd:element name="Composers" type="Composers"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Composers">
<xsd:sequence>
<xsd:element name="Composer" type="Composer" maxOccurs="unbounded" minOccurs="0"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Composer">
<xsd:sequence>
<xsd:element name="Name" type="xsd:string"></xsd:element>
</xsd:sequence>
</xsd:complexType>
Bạn có lược đồ mà bạn đã sử dụng để tạo POJO không? –
Danh sách composers = work.getComposers(). GetComposer(); điều này có vẻ không đúng. Nó sẽ trả lại cho bạn chỉ một nhà soạn nhạc không phải là danh sách các nhà soạn nhạc. Trong khi đó, danh sách composers = work.getComposers(); điều này có vẻ chính xác. –
Tôi đã thêm lược đồ XSD – seedhead