1

我正在通过 JAXB 生成一个 xml 文件,它会生成如下所示的元素:

<someData null="true"/>

Java 类如下所示:

@XmlType(propOrder={"someData"})
public class someClass implements Serializable {
    private String someData;

    public String getSomeData() {
        return someData;
    }

    public void setSomeData(String someData) {
        this.someData = someData;
    }
}

是否有注释或其他机制会产生输出,如果它是 nil,则从 xml 中删除 someData,或者产生像这样的空元素?:

<someData/>
4

1 回答 1

1

给定您的对象模型以下演示代码:

package forum10437439;

import javax.xml.bind.*;
import javax.xml.namespace.QName;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(someClass.class);

        someClass someClass = new someClass();
        someClass.setSomeData(null);

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        JAXBElement<someClass> je = new JAXBElement<someClass>(new QName("root"), someClass.class, someClass); 
        marshaller.marshal(je, System.out);
    }

}

将产生您正在寻找的 XML 结果:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root/>

可能的原因

您是否XmlAdapter在可能将实例转换为String您所看到的表示的包级别注册了一个?

于 2012-05-03T20:20:43.120 回答