4

我有一个Product具有以下属性的类:namedateCreated、和createdByUser,并且我正在使用 JAXB 编组。我想要这样的输出:dateModifiedmodifiedByUser

<product>
    <name>...</name>
    <auditInfo>
        <dateCreated>...</dateCreated>
        <createdByUser>...</createdByUser>
        <dateModified>...</dateModified>
        <modifiedByUser>...</modifiedByUser>
    </auditInfo>
</product>

但理想情况下,我希望避免AuditInfo围绕这些属性创建一个单独的包装类。

有没有办法使用 JAXB 注释来做到这一点?我看了看,@XmlElementWrapper但那只是为了收藏。

4

2 回答 2

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;
}

了解更多信息:

于 2011-07-05T18:21:21.307 回答
2

不,我不相信。中间班是必须的。

您可以通过AuditInfo在. 有需要的客户永远不知道。ProductProductAuditInfoProduct

public class Product {
   private @XmlElement AuditInfo auditInfo = new AuditInfo();

   public void setDateCreated(...) {
      auditInfo.dateCreated = ...
   }

   public static class AuditInfo {
      private @XmlElement String dateCreated;
   }
}
于 2011-07-05T18:15:22.957 回答