我有一个XML源,它以我无法改变的格式生成XML 格式类似于:
<entry name="bob" color="red"/> <entry name="bob" color="blue"/> <entry name="bob" color="green"/>
其中 name 属性可用于分组 解组后的结果类似于
class Entry { String name = "bob"; String color = "red"; } class Entry { String name = "bob"; String color = "green"; }
但是我想把它们组合成类似的东西:
class Entry { String name = "bob"; Set colors = { "red", "blue", "green" }; }
任何提示?
答案 0 :(得分:1)
作为JAXB解组过程的一部分,我认为这很容易。此外,您应该已经将public Set<String> colors
定义为对象的字段。作为单独的第二个处理步骤应该很容易实现:
entries = unmarshaller.unmarshal(...);
Map<String, Entry> compacted_entries = new HashMap<String, Entry>();
for (Entry entry: entries) {
if compacted_entries.containsKey(entry.name)
compacted_entries.get(entry.name).colors.add(entry.color);
else
compacted_entries.put(entry.name, entry);
entry.colors = new HashSet<String>();
entry.colors.add(entry.color);
end
}