0
<nodes>
<node>
<id/>
<name/>
</node>
<node>
<id/>
<name/>
</node>
</nodes>
的XML,所以我想知道是否有可能來解讀,這是作爲一個地圖使用JAXB作爲關鍵節點ID的對象?
感謝
<nodes>
<node>
<id/>
<name/>
</node>
<node>
<id/>
<name/>
</node>
</nodes>
的XML,所以我想知道是否有可能來解讀,這是作爲一個地圖使用JAXB作爲關鍵節點ID的對象?
感謝
是的,你可以使用XML適配器做到這一點。比方說,你有節點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)
註釋確實神奇,它在處理節點對象時指示JAXB
編組和解組到NodesToMapAdapter
。順便說一下,這個主題有一堆SO問題和答案。
非常感謝您的回答,我現在就試試看。 – GuruKulki