2014-09-27 82 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