我正在使用JAXB将java对象编组为XML。我已经从xsd生成了所需的java对象。我能够编组并获得如下所述的xml。
<Disk>
<Details>
<status>attached</status>
<size>10000000000</size>
<freeSpace>25600000<freeSpace>
<id>MI45563PO</id>
</Details>
</Disk>
但是xml只包含字段,我们在模式中设置值和必填字段(默认值)。我需要在xsd(作为空)中定义的所有字段以及我为其设置值的字段。
Java代码:
Disk disk = new Disk();
Details details = new Details();
details.setSize(100000000);
details .setDetails(details);
JAXBContext context = JAXBContext.newInstance("com.samplefile");
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty("jaxb.formatted.output",Boolean.TRUE);
marshalle.marshal(details ,new FileOutputStream(new
File("C:/test/Sample.xml")));
感谢任何帮助。
答案 0 :(得分:1)
你应该把注释
@XmlElement(nillable=true)
在类的所有字段中可以为null。 例如
@XmlElement(nillable=true)
public String getStatus() {
return status;
}
如果该字段包含空值,则输出将为:
<status xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>