2009-09-14 39 views
6

Tôi tạo các lớp Java từ tệp lược đồ XSD của tôi bằng cách sử dụng công cụ dòng lệnh XJC. Lớp ObjectFactory tạo ra nội dung không đầy đủ. Nó tạo ra các phương thức tạo mà không cần trang trí JAXBElement<Type> createType.Tạo mã JAXB XJC - Lớp ObjectFactory không đầy đủ

Điều gì có thể là nguyên nhân của việc này? Trân trọng Dominik

Trả lời

3

Chỉ một số loại trong một ràng buộc do JAXB2 tạo XJC cần JAXBElement trình bao bọc. Những loại có chú thích @XMLRootElement không cần trình bao bọc và do đó nhà máy đối tượng không tạo ra.

0

Bạn có các yếu tố trong lược đồ của mình hay chỉ các loại? Đây thường là lý do.

0

JAXB tạo ra phương pháp nhà máy mà tạo ra một JAXBElement từ một trường hợp đối tượng chỉ khi XSD của bạn chứa cả một định nghĩa complexType và một định nghĩa yếu tố riêng biệt sử dụng complexType rằng có cùng tên, ví dụ:

<complexType name="my-type"> 
    ... 
</complexType> 

<element name="my-type" type="tns:my-type"/> 

Trong này trường hợp, JAXB sẽ không chú thích lớp đã tạo với chú thích @XmlRootElement, nhưng sẽ cung cấp các phương thức factory bạn cần để tạo một JAXBElement từ cá thể đối tượng. Bằng cách đó, bạn có thể tuần tự hóa các thể hiện của các kiểu phần tử không phải là phần tử gốc như các phần tử gốc một cách dễ dàng. Vì vậy, bạn chỉ cần thêm một "phần tử" -declaration có cùng tên, thêm vào bất kỳ định nghĩa complexType nào bạn định sử dụng làm phần tử cấp cao nhất, và ObjectFactory sẽ tạo ra các phương thức nhà máy dự kiến.

Các vấn đề liên quan