3

我有一个 XML 源,它以我无法更改的格式生成 XML。
格式类似于:

    <entry name="bob" color="red"/>
    <entry name="bob" color="blue"/>
    <entry name="bob" color="green"/>

其中name属性可用于分组。
解组后的结果类似于

    类条目{

        字符串名称=“鲍勃”;
        字符串颜色=“红色”;

    }

    类条目{

        字符串名称=“鲍勃”;
        字符串颜色=“绿色”;

    }

但是我想将这些组合成类似于:

    类条目{

        字符串名称=“鲍勃”;
        设置颜色 = {“红色”、“蓝色”、“绿色”};

    }

有什么提示吗?

4

1 回答 1

1

作为 JAXB 解组过程的一部分,我认为这并不容易。此外,您应该已经将 a 定义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
}
于 2012-12-25T21:49:04.500 回答