将对象转换为JAXBElement

我想实现一个返回JAXBElement的方法,下面是代码

@XmlRootElement(name = "history") @XmlAccessorType(XmlAccessType.FIELD) public class IBHistoryInfo { @XmlElement(name="trade") private List mTrade; public void updateTradeValue(int reqId, String date, double open, double high, double low, double close, int volume, int count, double WAP, boolean hasGaps){ IBTradeInfo info = new IBTradeInfo(); info.setReqId(reqId); info.setDate(date); info.setOpen(open); info.setHigh(high); info.setLow(low); info.setClose(close); info.setVolume(volume); info.setCount(count); info.setWap(WAP); info.setHasGaps(hasGaps); this.setTradeInfo(info); } public void setTradeInfo(IBTradeInfo tradeinfo){ mTrade.add(tradeinfo); } public List getTradeInfo(){ if (mTrade == null) { mTrade = new ArrayList(); } return this.mTrade; } } 

现在我不知道如何创建一个在上面的类中返回JAXBElement的方法

例如

  public JAXBElement getTradeXML(){ return mTrade } 

以下是如何实现getTradeXML()方法:

 public JAXBElement getTradeXML(){ if(null == mTrade || mTrade.size() == 0) { return null; } IBTradeInfo tradeInfo = mTrade.get(0); QName qname = new QName("http://www.example.com", "trade-info"); return new JAXBElement(qname, IBTradeInfo.class, tradeInfo); } 

我相信,你一次只能返回1个元素。 在这种情况下,您可能需要编写如下内容:

 public JAXBElement getTradeXML(){ return new JAXBElement(mTrade.get(0), IBTradeInfo.class); } 

只是一个猜测。