Tôi đang sử dụng xjc để tạo các lớp Java từ lược đồ XML và sau đây là một đoạn trích của XSD.Lược đồ XML cho các lớp Java với XJC
<xs:element name="NameInfo">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element ref="UnstructuredName"/> <!-- This line -->
<xs:sequence>
<xs:element ref="StructuredName"/>
<xs:element ref="UnstructuredName" minOccurs="0"/> <!-- and this line! -->
</xs:sequence>
</xs:choice>
<xs:element ref="SomethingElse" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Đối với hầu hết các phần các lớp học tạo ra cũng tốt nhưng đối với khối trên, chúng tôi sẽ nhận được một cái gì đó như:
public List<Object> getContent() {
if (content == null) {
content = new ArrayList<Object>();
}
return this.content;
}
với những nhận xét sau đây trên nó:
* You are getting this "catch-all" property because of the following reason:
* The field name "UnstructuredName" is used by two different parts of a schema. See:
* line XXXX of file:FILE.xsd
* line XXXX of file:FILE.xsd
* To get rid of this property, apply a property customization to one
* of both of the following declarations to change their names:
* Gets the value of the content property.
Tôi có đặt một bình luận ở cuối của hai dòng trong câu hỏi.
Hiện tại, tôi không nghĩ sẽ dễ thay đổi lược đồ vì điều này đã được quyết định giữa các nhà cung cấp và tôi không muốn đi tuyến đường này (nếu có thể) vì nó sẽ làm chậm tiến độ một chút.
Tôi đã tìm kiếm và đã tìm thấy this page, là tùy chỉnh bên ngoài những gì tôi muốn làm? Tôi chủ yếu làm việc với các lớp được tạo nên tôi không hoàn toàn quen thuộc với quy trình tạo ra các lớp này. Một ví dụ đơn giản về "tùy biến thuộc tính" sẽ là tuyệt vời! Phương pháp thay thế tạo ra các lớp Java sẽ là tốt miễn là lược đồ vẫn có thể được sử dụng.
EDIT: Tôi nên làm rõ rằng hai UnstructuredName
thực sự là cùng một yếu tố.
Tôi không hoàn toàn chắc chắn cách sắp xếp lại các yếu tố có thể giúp đỡ trong trường hợp này. Nếu tôi có thể "chuỗi" bên trong thành phần tử khác, vấn đề này sẽ được giải quyết? Điều đó có khả thi với sự biến đổi không? Nếu tôi thực hiện một số phép biến đổi, tôi sẽ cần một biến đổi thành một cấu trúc mà tôi thích và sau đó thực hiện một phép chuyển đổi khác trở lại cấu trúc ban đầu của nó? – nevets1219