2015-09-10 18 views
0

我們使用ObjectFactory類來創建對象以封送xml文件。當我們創建一個新對象時,ObjectFactory類是否會將默認值填充到必需元素中。JaxB對象工廠是否將默認值填充爲必填元素

在XSD:

element name="MerchantCategoryCode" default="5541 

爪哇:

ObjectFactory ob = new ObjectFactory(); 
MyObject myOb = ob.createMyObject(); 
myOb.getMerchantCategoryCode(); // giving null value 

回答

0

引自:Elements Default Value and Marshalling
當一個類具有與默認值的元素性質,並且如果值爲空,則編組器不會在XML中產生相應的元素。

@XmlRootElement 
class Product { 
    @XmlElement(defaultValue="Apple") public String modelName=null; 
} 

marshaller.marshal(new Product(),System.out); 

的上述輸出將是:<產品/>

元素缺省值不進入畫面時的元件不存在,這是因爲每XSD正確。

如果你想輸入的值包含一個默認值只是爲它分配在Java級別象下面這樣:以上

@XmlRootElement 
class Product { 
    @XmlElement public String modelName="Apple"; 
} 


marshaller.marshal(new Product(),System.out); 

輸出是:

<產品> < MODELNAME>蘋果 </product>