2

我在基于 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[...]
}
4

1 回答 1

1

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

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

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

于 2013-03-18T14:52:21.227 回答