JAXB,使用xml属性作为hashmap中的键

时间:2014-11-15 18:28:25

标签: java xml jaxb

我有一个非常简单的xml

<List>
   <Item name="somename">
        .....
   </Item>
   <Item name="somename2">
   ....

在我的java对象中,我想使用name属性作为hashmap中的键。用jaxb可以吗? 像

这样的东西
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "List")
public class MyList {
    private HashMap<String,Item> map;
}

1 个答案:

答案 0 :(得分:1)

有点晚了,我自己还没试过,但有人可以尝试以下方法:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "List")
public class MyList {
    private HashMap<String, Item> map;

    @XmlElement(name = "entry")
    public MapEntry[] getMap() {
        List<MapEntry> list = new ArrayList<MapEntry>();
        for (Entry<String, Item> entry : map.entrySet()) {
            MapEntry mapEntry = new MapEntry();
            mapEntry.key = entry.getKey();
            mapEntry.value = entry.getValue();
            list.add(mapEntry);
        }

        return list.toArray(new MapEntry[list.size()]);
    }

    public void setMap(MapEntry[] arr) {
        for(MapEntry entry : arr) {
            this.map.put(entry.key, entry.value);
        }
    }

    public static class MapEntry {
        @XmlAttribute
        public String key;
        @XmlValue
        public Item value;
    }
}