2014-09-27 307 views
1

我有一個包含此內容的xml文件。每個事務具有trans_開始並以事務處理號碼JAXB - 如何將xml數組映射到對象列表

<trans_1> 
    <date>2013/10/10</date> 
    <code>109129</code> 
    <amount>+000000024000000</amount> 
    <balance>+000000024000000</balance> 
</trans_1> 
<trans_2> 
    <date>2013/10/10</date> 
    <code>109149</code> 
    <amount>+000000025000000</amount> 
    <balance>+000000049000000</balance> 
</trans_2> 
<trans_3> 
    <date>2013/10/10</date> 
    <code>109161</code> 
    <amount>+000000005000000</amount> 
    <balance>+000000054000000</balance> 
</trans_3> 

我想此陣列映射到下面的對象的列表結束。

class Transaction{ 
    string date; 
    string code; 
    string amount; 
    string balance; 


    /**** getter and setter ***/ 
} 
+0

解決JAXB讓這樣的事情很容易。查看Blaise的答案http://stackoverflow.com/questions/11221136/convert-xml-to-java-object-using-jaxb-unmarshal了一個非常詳細的例子。 – 2014-09-27 08:15:15

+0

@StephenCarlson tnx。但標籤名稱不相同。 ...。我不能使用@XmlElement(name =「trans」)例如 – 2014-09-27 08:27:18

+1

您是否對模式有任何控制權?將id作爲屬性傳遞而不是將其嵌入到標記名稱中將會是更好的XML形式。如果沒有,你可以使用@XmlAnyElement,但是你最終會得到DOM對象,你必須做一些手動映射才能達到你想要的結果。 – 2014-09-27 08:41:09

回答

0

我發現@XmlElements

@XmlAccessorType(XmlAccessType.FIELD) 
public class DepositLast3CycleResponse extends BaseResponseBean { 

    @XmlElements(
      { 
        @XmlElement(name = "trans_1"), 
        @XmlElement(name = "trans_2"), 
        @XmlElement(name = "trans_3") 
      } 
    ) 
    private List<TransactionInfo> transactions; 


    /****** getters and setters ****/ 
} 
+0

因此它僅限於3個交易。你有沒有找到解決任何數量的交易? – ponomandr 2014-10-11 22:26:03

+0

@ponomandr現在我找不到這個問題的全球解決方案 – 2014-10-26 13:01:45