2012-06-08 61 views
1

我被困在應該非常基本的東西上。 我有一個帶註釋的人員POJO(@XMLAttribute和@XMLElement註釋在字段上)。 該類被註釋爲@XMLRootElement。 現在我有一個服務,執行查詢返回這些實例的列表。換句話說, 我結束了JAXB:註釋實例的編組列表

List<Person> 

我只是想元帥這個列表轉換成XML,進入我的servlet的響應輸出。

如果我僅僅通過列表和編組環路中的每個對象單獨:

for(Person person : people){ 
    jaxbMarshaller.marshal(person, out); 
} 

它整個文檔多次(我結束了多個XML標題行對於每個記錄)輸出:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<person> 
<name>Bob</name> 
</person> 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<person> 
<name>Gary</name> 
</person> 

它不應該輸出記錄之間的重複標題行。另一方面,如果我嘗試通過一次調用來整理整個列表: jaxbMarshaller.marshal(people,out);

我得到以下異常:

javax.xml.bind.JAXBException: class java.util.ArrayList nor any of its super class is 
known to this context. 

什麼是「正確」的方式來簡單地封送註解POJO的多個實例? 我認爲它必須包裹在另一個叫做'people'的'上'根元素中,然後將每個人節點作爲一個孩子。但你怎麼用JAXB做到這一點?

謝謝

回答

-1

是的,你說得對。您必須將父元素作爲LIST,然後嘗試在列表對象中添加人員值。