簡體   English   中英

使用JAXB解組列表中的哈希表

[英]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){}
}

有人有見識嗎? 可能丟失了一些.. 謝謝!

您應該在適配器中切換HashMapLinkedList

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM