问题描述
我有一个Java对象
@XmlRootElement
public class Customer {
private String name;
private List<PhoneNumber> phoneNumbers = new ArrayList<PhoneNumber>();
private String id;
private Date startDate;
private Date endDate;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement(name = "phone-number")
public List<PhoneNumber> getPhoneNumbers() {
return phoneNumbers;
}
public void setPhoneNumbers(List<PhoneNumber> phoneNumbers) {
this.phoneNumbers = phoneNumbers;
}
}
我想定义一个架构xml(customer.xsd),用于在生成xml时设置标签的顺序。与xml对象的顺序相比,生成的xml的对象应该像下面这样以不同的顺序排列。
<customer>
<startDate></startDate>
<endDate></endDate>
<name></name>
<id></id>
<phoneNumbers></phoneNumbers>
</customer>
编组和解组代码均应基于相同的模式xml。
有人可以帮助我如何创建此架构以及如何实现订购吗?
1楼
您有两种选择:
-
在Java对象中,您可以定义
@XmlType(propOrder={<order of the elements>})
有关详细信息,请参见 。 - 第二种方法(使用xsd),您可以这样定义xsd:
<xsd:element name="Customer"> <xsd:complexType > <xsd:sequence> <xsd:element name="name" type="xsd:string" /> <xsd:element name="id" type="xsd:string" /> <xsd:element name="startDate" type="xsd:string" /> <xsd:element name="endDate" type="xsd:int" /> <xsd:element name="phoneNumbers" type="xsd:string" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element>
在XSD中,您可以对<xsd:sequence>
的元素进行<xsd:sequence>
请注意,在本示例中,我没有尝试使用此XSD,因此添加了它作为参考。