我有一个非常简单的xml

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


在我的Java对象中,我想使用名称属性作为哈希图中的键。 jaxb可能吗?
就像是

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

最佳答案

有点晚了,我自己还没有尝试过,但是可以尝试以下操作:

@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;
    }
}

10-04 20:12