我有一个非常简单的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;
}
答案 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;
}
}