[英]How to get XML to Map of Objects in Java using jaxb?
我有一個像
<nodes>
<node>
<id/>
<name/>
</node>
<node>
<id/>
<name/>
</node>
</nodes>
所以我想知道是否有可能使用jaxb將其解映射為鍵為節點ID的對象映射?
謝謝
是的,您可以使用xml適配器執行此操作。 假設您將Nodes bean作為
@XmlAccessorType(XmlAccessType.FIELD)
public class Nodes {
@XmlJavaTypeAdapter(NodesToMapAdapter.class)
public List<Node> nodes;
public List<Node> getNodes() {
return nodes;
}
public void setNodes(List<Node> nodes) {
this.nodes = nodes;
}
}
然后,要從節點列表中獲取節點映射(按ID),您可以編寫一個簡單的適配器,如下所示。
public class NodesToMapAdapter extends XmlAdapter<List<Node>, Map<String, Node>> {
@Override
public Map<String, Node> unmarshal(List<Node> v) throws Exception {
Map<String, Node> nodesMap = new HashMap<String, Node>();
for(Node n: v)
{
nodesMap.put(n.getId(), n);
}
return nodesMap;
}
@Override
public List<Node> marshal(Map<String, Node> v) throws Exception {
//create a list of nodes using the map of nodes
return null;
}
}
@XmlJavaTypeAdapter(NodesToMapAdapter.class)
注釋@XmlJavaTypeAdapter(NodesToMapAdapter.class)
了神奇的作用,它在處理Nodes對象時將JAXB
編組器NodesToMapAdapter
定向到NodesToMapAdapter
。 順便說一句,關於這個話題有很多SO問題和答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.