JAXB对象中的计算字段

时间:2013-11-18 17:50:23

标签: java jaxb

我想知道是否可以在JAXB对象中创建计算字段。这是我想要的快速模型:

public class Person {

    public Date dateOfBirth;

    // person is eligible for benefits at age 65
    public Date getDateEligibleForBenefits() {

    }
}

为了使这更加困难,这些类是通过XSD文件生成的:

<xs:schema>
<xs:element name="Person" type="Person" />
<xs:complexType name="Person">
    <xs:element name="dateOfBirth" />
</xs:complexType>
</xs:schema>

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您创建了一个不完整的xsd方案。右:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Person" type="Person" />
<xsd:complexType name="Person">
<xsd:sequence>
    <xsd:element name="dateOfBirth" type="xsd:dateTime" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>

“complexType”必须包含“sequence”,然后才包含“element”。我不建议手动编写java类,使用特殊工具生成代码,如 XJC Read this manual

最后你得到一个班级:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Person", propOrder = {
    "dateOfBirth"
})
public class Person {

    @XmlElement(name = "dateOfBirth", required = true)
    @XmlSchemaType(name = "dateTime")
    protected XMLGregorianCalendar dateOfBirth;

    .....

}