2013-07-17 68 views
0

也許這是一個簡單的請求,但我還沒有找到辦法。java - JAXB空值

我要建立這樣的一個的XML輸出:

<person name="Mike"> 
    <orders id="1"> 
     <order ido="1"></order> 
    </orders> 
</person> 

我必須從數據庫查詢得到的值,但在的情況下,該querys不返回「命令」,那麼XML必須是這樣的:

<person name="Mike"> 
    </orders> 
<person> 

這些可能嗎?,我知道有點奇怪,但是客戶的要求。

+0

「」本身無效的XML。你鬃毛「」? – Keith

+0

而且,在任何情況下,「」最有可能被任何解析器解釋/讀取,就像訂單元素完全缺失一樣。解析器在這方面沒有選擇,他們必須遵循XML規範(它不僅定義了XML文檔的格式,而且還定義瞭如何解釋XML內容)。 – Keith

+0

是的,這就是爲什麼我說的是奇怪的,但經過與客戶的長談後,他們發現這是一個錯誤 – Eduardo

回答

0

我知道我們經常在我們的代碼中遇到這種情況。我們首先將XML定義爲XSD,然後生成JAXB。爲此,訂單將爲0..1,然後訂單內的列表爲1..n。

如果你只是註解類,我認爲你需要做這樣的事情:

@XmlElement(name = "orders") 
protected List<Order> orders; 

public List<Order> getOrders() { 
    if (orders == null) { 
     orders = new ArrayList<Order>(); 
    } 
    return this.orders; 
} 

這將始終返回一個列表。如果列表爲空,您應該返回<訂單/ >。

0

您可以在編組之前在Person類上設置一個空實例Orders以獲得所需的輸出。