2015-03-25 43 views
1

我正在使用JAXB將java對象編組爲XML。我已經從xsd生成了所需的java對象。我能夠編組並獲得如下所述的XML。Jaxb marshalling - 從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"))); 

任何幫助表示讚賞。

回答

1

你應該把註釋

@XmlElement(nillable=true) 

在類的細節,可以爲空的所有字段。 例如

@XmlElement(nillable=true) 
public String getStatus() { 
    return status; 
} 

如果該字段包含空值的輸出將是:

<status xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> 
相關問題