2012-10-16 98 views
2

我使用XStream序列的對象的列表。 (任務對象列表)。西河 - 添加屬性到根節點

我的XML返回到jsp頁面。

HashMap<String, Object> m = new HashMap<String, Object>(); 
XStream xstream = new XStream(); 
xstream.alias("Task", Task.class); 
xstream.alias("Tasks", Vector.class); 
m.put("task", task); 
m.put("xml", xstream.toXML(l)); 

return new ModelAndView("task", m); 

最終的XML結構看起來像這樣:

<Tasks> 
<Task> 
    <TaskId>1<TaskId> 
    <TaskName>Task 1</TaskName> 
    etc... 
</Task>  

的根節點回來爲一個矢量,我使用xtream到如上所示爲「任務」的別名。

當我創建一個新的任務,或更新任務,我有重新安排的任務的順序,編號等,所以我返回任務對象的完整列表的代碼。但是我想將剛剛創建/更新的單個TaskId的值存儲爲XML結構根節點中的一個屬性,因此我不必在網絡中進行2次調用,並且我的客戶端代碼可以訪問數據庫中新的/更新的任務行的ID。

因此,舉例來說,如果我創建了一個新的任務,它被賦予的5任務id,我想給任務ID存儲在根節點這樣的:

<Tasks myId="5"> 
<Task> 
    <TaskId>1</TaskId> 
    <TaskName>Task 1</TaskName> 
</Task> 
<Task> 
    <TaskId>2</TaskId> 
    <TaskName>Task 2</TaskName> 
</Task> 
... 
<Task> 
    <TaskId>5</TaskId> 
    <TaskName>Task 5</TaskName> 
</Task> 
etc 

如何做到這一點與西河?我是否需要使用XSLT文件來轉換XML輸出?什麼是完成這個最好的方法?

回答

1

您可以通過編寫任務的轉換,並且設置屬性字段作爲元帥方法如下做到這一點,

writer.addAttribute( 「mydtl」,tasks.get(2).getTaskName()) ;

請參考以下鏈接創建轉換器,

http://x-stream.github.io/converter-tutorial.html

相關問題