Java Don';是否在JAXB中输出空列表(对象到字符串)?

Java Don';是否在JAXB中输出空列表(对象到字符串)?,java,jaxb,Java,Jaxb,我有一个可能包含空列表的对象。如果列表为空,我不希望看到标记出现在我的XML的字符串输出中。 但是,JAXB仍在输出空标记 类中的My字段RemoteEdition.java: @XmlElementWrapper(name = "dealings") @XmlElement(name = "dealing") private List<Dealing> dealings; 实际产量: <remoteEdition> <dealings/> <

我有一个可能包含空列表的对象。如果列表为空,我不希望看到标记出现在我的XML的
字符串
输出中。 但是,JAXB仍在输出空标记

类中的My字段
RemoteEdition.java

@XmlElementWrapper(name = "dealings")
@XmlElement(name = "dealing")
private List<Dealing> dealings;
实际产量:

<remoteEdition>
    <dealings/>
</remoteEdition>

在Jackson中,我将使用以下注释元素:

@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<Dealing> dealings;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
私人上市交易;
JAXB中是否有一个等价物?我在网上找不到任何例子。。。
另外,我已经试过了,但是没有用。

实现这一点的一个选择是利用

beforemashall
方法。此空元素仅在列表
为空但不为空时创建

因此,如果列表为空,则可以在
beforemashall
方法中将字段设置为
null

以下是一个独立的示例:

@XmlRootElement
class Root {

    @XmlElementWrapper(name = "wrapper")
    @XmlElement
    private List<Element> element;

    void beforeMarshal(Marshaller u) {
        if (element != null && element.isEmpty()) {
            element = null;
        }
    }
}

class Element {

}

public static void main(String[] args) throws JAXBException {
    JAXBContext context = JAXBContext.newInstance(Root.class);
    StringWriter writer = new StringWriter();
    Root jaxbElement = new Root();
    jaxbElement.element = new ArrayList<JaxbNullElementWrapper.Element>();
    context.createMarshaller().marshal(jaxbElement, writer);
    System.out.println(writer.toString());
}
@XmlRootElement
类根{
@xmlementwrapper(name=“wrapper”)
@XmlElement
私有列表元素;
元帅前无效(元帅u){
if(element!=null&&element.isEmpty()){
元素=空;
}
}
}
类元素{
}
公共静态void main(字符串[]args)抛出JAXBEException{
JAXBContext context=JAXBContext.newInstance(Root.class);
StringWriter编写器=新的StringWriter();
根jaxbElement=新根();
jaxbElement.element=newArrayList();
context.createMarshaller().marshal(jaxbElement,writer);
System.out.println(writer.toString());
}
输出:

@XmlRootElement
class Root {

    @XmlElementWrapper(name = "wrapper")
    @XmlElement
    private List<Element> element;

    void beforeMarshal(Marshaller u) {
        if (element != null && element.isEmpty()) {
            element = null;
        }
    }
}

class Element {

}

public static void main(String[] args) throws JAXBException {
    JAXBContext context = JAXBContext.newInstance(Root.class);
    StringWriter writer = new StringWriter();
    Root jaxbElement = new Root();
    jaxbElement.element = new ArrayList<JaxbNullElementWrapper.Element>();
    context.createMarshaller().marshal(jaxbElement, writer);
    System.out.println(writer.toString());
}