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