[英]Using JAXB to unmarshal a hash map from a list
我有這種結構的xml(項的鍵值對):
<root>
<item value="dada" key="dad" />
<item value="mama" key="mum" />
<others>
<os>asdad</os>
</others>
</root>
我想將項目元素映射到HashMap,字符串為Item.key
我編寫了一個適配器,可從xml解組列表並將其映射到列表。 問題是,JAXB在解組時獲取列表為空,而在編組至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){}
}
有人有見識嗎? 可能丟失了一些.. 謝謝!
您應該在適配器中切換HashMap
和LinkedList
:
public final class ItemMapAdapter extends XmlAdapter<LinkedList<Item>, HashMap<String, Item>>
{
@Override
public LinkedList<Item> marshal(HashMap<String, Item> v) {}
@Override
public HashMap<String, Item> unmarshal(LinkedList<Item> v) {}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.