我正在使用 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 的 TaskId,我希望将任务 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 完成此任务?我是否需要使用 XSLT 文件来转换 XML 输出?实现这一目标的最佳方法是什么?