【问题标题】:JAXB ignore transient fields without annotationsJAXB 忽略没有注释的瞬态字段
【发布时间】:2013-03-18 14:41:27
【问题描述】:

我在基于 JDK 5 的应用程序上使用 JAXB。

XML 编组是一个附带功能,因此 POJO 模型上的注释被排除在外。应该排除的字段是transient(java 关键字)。

有没有办法将Marshaler 配置为忽略这些字段。

这是我用来将 POJO 序列化为 XML 的代码:

JAXBContext context = JAXBContext.newInstance(BasePOJO.class, target.getClass());

JAXBElement<WsResponse> model = new JAXBElement<BasePOJO>(
        new QName(target.getClass().getSimpleName()), 
        (Class<BasePOJO>) target.getClass(), 
        (BasePOJO)target
    );

Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(model, os);

我需要序列化的示例 POJO:

public class APOJO extends BasePOJO {
  private Long id;
  private String desc;
  private transient String aFieldToIgnore;

  //and the accessors[...]
}

【问题讨论】:

    标签: java xml jaxb


    【解决方案1】:

    我不相信没有在您的字段上使用@XmlTransient 注释的方法可以做到这一点。

    您可以做的唯一真正的自定义是在您的 XSD 中使用绑定文件或内联绑定。

    检查参考以了解可能的情况:http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.5/tutorial/doc/JAXBUsing4.html

    【讨论】:

      猜你喜欢
      • 2021-05-11
      • 2012-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      • 2017-10-15
      • 2022-09-24
      相关资源
      最近更新 更多