gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 13:37:08 25 4
gpt4 key购买 nike

我有一个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 对象应如下所示,与对象成员顺序相比,顺序不同。

<customer>
<startDate></startDate>
<endDate></endDate>
<name></name>
<id></id>
<phoneNumbers></phoneNumbers>
</customer>

编码和解码代码都应基于相同的架构 xml。

有人可以帮助我如何创建这个架构以及如何实现我的排序吗?

最佳答案

你有两个选择:

  • 在 Java 对象中,您可以定义 @XmlType(propOrder={<order of the elements>})请参阅here了解更多详情。
  • 第二种方法(使用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,我添加它供您引用。

关于java - 按照 Schema xml 的顺序将 Java 对象转换为 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31589476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com