当前位置: 代码迷 >> java >> 按照Schema xml的顺序将Java对象转换为XML
  详细解决方案

按照Schema xml的顺序将Java对象转换为XML

热度:66   发布时间:2023-08-02 10:55:35.0

我有一个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。

有人可以帮助我如何创建此架构以及如何实现订购吗?

您有两种选择:

  • 在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,因此添加了它作为参考。

  相关解决方案