簡體   English   中英

JAXB-當包裝器元素為root時,如何使用XmlAdapter解組列表?

[英]JAXB - How to use XmlAdapter for unmarshalling a list when wrapper element is root?

當列表的包裝元素是根本身時,是否存在一種將列表解組到地圖的方法?

我有以下無法更改的xml結構:

<?xml version="1.0"?>
   <root>
     <article id="1">...</article>
     <article id="2">...</article>
    ...
  </root>

我喜歡具有以下地圖結構:

Map<Integer,Article> map 

我嘗試使用XmlAdapter,但問題是適配器的解組方法。 在這里,它喜歡擁有自己的包裝元素,例如我沒有的“ articles”。 我只找到了工作示例 ,其中列表具有自己的專用包裝器元素。

我嘗試使用“ unmarshall(列表文章)”,但從未被調用。 並使用“ unmarshall(對象文章)”將為每個文章元素調用方法

有什么提示嗎?

@XmlRootElement(name = "root")
@XmlAccessorType(XmlAccessType.FIELD)
public class DataSet {
   @XmlJavaTypeAdapter(MyAdapter.class)
   @XmlElement(name="article")
   private Map<Integer,Article> map;
}

public class MyAdapter extends XmlAdapter< ??? , Map<Integer,Article>  {

    @Override
    public Map<Integer, Article> unmarshal( ???  ) throws Exception {
     Map<Integer, Article> map = new HashMap<Integer, Article>();
     ...
     return map;
    }
    ...
}

答案是,當前不支持它,您需要自己動手做,這意味着在解組后您需要遍歷對象列表並將其自己放置在地圖上

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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