2014-02-14 22 views
1

我想在XML中創建一個內聯列表。事情是這樣的:以簡單XML理解構造函數注入

<numbers> 
<phone>1234</phone> 
<phone>5678</phone> 
<phone>3456</phone> 
</numbers> 

教程here亮點如何可以做到。

現在,我不知道該如何處理

public Order(@Attribute(name="name") String name, 
      @Element(name="product") String product) 

public OrderManager(@ElementList(name="orders") List<Order> orders) { 
     this.orders = orders; 
    } 

我從來沒有在Java中有列出工作思路。

我的情況: 查詢後,數據庫將填滿數組phone_numbers[x]。我該如何使用數組和構造函數注入中的值來生成類似上面的XML文件?

回答

1

假設你有一個類PhoneNumbers像這樣:

​​

有在這種情況下沒有必要轉換爲List

String[] phone_numbers= new String[] { "1234", "5678" }; // populate from DB instead 
PhoneNumbers numbers = new PhoneNumbers(phone_numbers); 

// to serialize 
Serializer serializer = new Persister(); 
serializer.write(numbers, System.out); 

這將打印出以下XML:

<phoneNumbers> 
    <numbers length="2"> 
     <phone>1234</phone> 
     <phone>5678</phone> 
    </numbers> 
</phoneNumbers> 

沒有辦法很簡單框架,以不打印根元素。因此,如果您絕對需要序列化numbers元素,則可以對根元素進行字符串剝離。

就是這樣!

+0

謝謝!所以這基本上是[讀取一組元素](http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php#array),對不對? –

+0

這是絕對正確的。 '@ ElementList'註釋具有這個方便的概念,稱爲inline,它會放棄根元素,但不能將條目重命名爲'phone'。 '@ ElementArray'可以重命名條目,但沒有內聯概念。這將是很好,如果他們創造了兩個混合... – jkschneider

+0

還有一件事。那麼數組大小爲10但DB僅填充5個值的情況如何呢? 我想在這種情況下,我們會得到其餘的空白標籤5.任何方式來對付呢? –