オブジェクトのリストをシリアル化するために Xstream を使用しています。( Task オブジェクトのリスト)。
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 を使用してそれを「タスク」にエイリアスしています。
新しいタスクを作成するとき、またはタスクを更新するときに、タスクの順序や番号付けなどを再配置するコードがあるため、Task オブジェクトの完全なリストを返します。しかし、XML 構造のルート ノードの属性として作成/更新した単一の TaskId の値を保存したいので、ネットワークを介して 2 つの呼び出しを行う必要がなく、クライアント コードがアクセスできます。データベース内の新規/更新された Task 行の ID。
たとえば、新しいタスクを作成し、TaskId 5 が割り当てられている場合、次のようにルート ノードにタスク 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
Xstream でこれを達成するにはどうすればよいですか? XML 出力を変換するには、XSLT ファイルを使用する必要がありますか? これを達成するための最良の方法は何ですか?