我有一个这种结构的 xml(项目的键值对):
<root>
<item value="dada" key="dad" />
<item value="mama" key="mum" />
<others>
<os>asdad</os>
</others>
</root>
我想将项目元素映射到一个HashMap,字符串是Item.key
我编写了一个适配器,它从 xml 中解组一个列表并将一个映射编组到一个列表。问题是,JAXB 在解组时获取列表 emtpy,并且在编组到 xml 时只写入一项。
下面是对应的类:
根.java
@XmlRootElement(name = "root")
public class Root
{
@XmlJavaTypeAdapter(ItemMapAdapter.class)
@XmlElement(name = "item")
public HashMap<String, Item> getContent()
{
return content;
}
public void setContent(HashMap<String, Item> content)
{
this.content = content;
}
private HashMap<String, Item> content;
}
ItemMapAdapter.java
public final class ItemMapAdapter extends XmlAdapter<HashMap<String, Item>, LinkedList<Item>>
{
@Override
public HashMap<String, Item> marshal(LinkedList<Item> v)
{
//the list here is empty.
//returns a map<Item.key, Item>
}
@Override
public LinkedList<Item> unmarshal(HashMap<String, Item> v){}
}
有人有任何见解吗?可能缺少一些东西.. 谢谢!