2013-10-26 141 views

回答

0

是的,你可以使用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問題和答案。

+0

非常感謝您的回答,我現在就試試看。 – GuruKulki