我定义了以下 XSD 来生成一些 jaxb 对象。它运作良好。
<xsd:element name="Person" type="Person" />
<xsd:complexType name="Person">
<xsd:sequence>
<xsd:element name="Id" type="xsd:int" />
<xsd:element name="firstName" type="xsd:string" />
<xsd:element name="lastName" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="People">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Person" minOccurs="0" maxOccurs="unbounded"
type="Person" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
我使用 Spring RowMapper 将数据库中的行映射到 Person 对象。所以,我最终得到了一个 List<Person> 对象,它不是People 对象。I People 对象在内部有一个 List<Person> 。
然后在我的泽西资源类中,我有:
@GET
@Path("/TheListOfPeople")
public List<Person> getListOfPeople() {
List<Person> list = dao.getList();
return list;
}
返回的 XML 是:
<?xml version="1.0" encoding="UTF-8" standalone="yes" >
<people>
<Person>...</Person>
<Person>...</Person>
<Person>...</Person>
<Person>...</Person>
</people>
我的问题是它是如何映射到 XML 中的 List<Person> 到 People 的。此外,元素是“人”(大写 P)而不是“人”(小写 P)。似乎它根本没有真正使用 XSD。
编辑这在某种程度上与这个问题有关:JAXB Collections (List<T>) Use Pascal Case instead of Camel Case for Element Names