![](/img/trans.png)
[英]JAXB Unmarshalling issues when wrapper element and root element are the same
[英]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.