我有一个类Product
,其中包含以下属性:name
,dateCreated
,createdByUser
,dateModified
和modifiedByUser
,以及我使用JAXB编组。我希望得到这样的输出:
<product>
<name>...</name>
<auditInfo>
<dateCreated>...</dateCreated>
<createdByUser>...</createdByUser>
<dateModified>...</dateModified>
<modifiedByUser>...</modifiedByUser>
</auditInfo>
</product>
但理想情况下,我希望避免围绕这些属性创建单独的AuditInfo
包装类。
有没有办法用JAXB注释做到这一点?我查看了@XmlElementWrapper
但这只是收藏品。
答案 0 :(得分:3)
注意:我是EclipseLink JAXB (MOXy)负责人,也是JAXB 2.X(JSR-222)专家组的成员。
您可以在此用例中使用MOXy的@XmlPath
扩展名:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Product {
private String name;
@XmlPath("auditInfo/dateCreated/text()")
private Date dateCreated;
@XmlPath("auditInfo/createdByUser/text()")
private String createdByUser;
}
更多信息:
答案 1 :(得分:2)
不,我不相信。中介课是必要的。
您可以通过AuditInfo
将Product
作为嵌套内部类放在Product
中,并将getter和setter方法添加到AuditInfo
来设置{{1}上的字段。 }}。 Product
的客户永远不会知道。
public class Product {
private @XmlElement AuditInfo auditInfo = new AuditInfo();
public void setDateCreated(...) {
auditInfo.dateCreated = ...
}
public static class AuditInfo {
private @XmlElement String dateCreated;
}
}