在编组期间忽略元素而不使用@XmlTransient

时间:2013-09-15 15:29:37

标签: java xml jaxb

编组时可以忽略某些元素而不使用@XmlTransient

JAXBContext jc = JAXBContext.newInstance(Customer.class);

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

没有的原因是因为使用xml bean的其他开发人员可能想要编组这些元素。

2 个答案:

答案 0 :(得分:0)

如果要从XML中排除某些字段,可以将其值设置为null null字段未编组到XML中 示例:
DTO:

class Customer
{
   private String a;
   // getters/setter
}  

逻辑:

Customer customerInstance = ...; // some business logic with Customer instance
//... business logic
customerInstance.setA(null);     // set null before marshalling
// marshalling
XML中将缺少

属性a

答案 1 :(得分:0)

好人,

我认为简单的答案是创建另一类没有那些字段的“客户”模型

class CustomerA{

@XmlElement
private String name;

//@XmlElement   // Element that I do not want to keep
//Private Date dob;

}

我需要做的就是将值设置为CustomerA,并且由于java传递了对象的值引用,我只会产生一些引用字节。

我相信这是最便宜,最简单的方式,我可以控制该域名。