JAXB - 如何将xml数组映射到对象列表
问题描述:
我有一个包含此内容的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 ***/
}
答
我发现@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
解决JAXB让这样的事情很容易。查看Blaise的答案http://stackoverflow.com/questions/11221136/convert-xml-to-java-object-using-jaxb-unmarshal了一个非常详细的例子。 – 2014-09-27 08:15:15
@StephenCarlson tnx。但标签名称不相同。 ...。我不能使用@XmlElement(name =“trans”)例如 –
2014-09-27 08:27:18
您是否对模式有任何控制权?将id作为属性传递而不是将其嵌入到标记名称中将会是更好的XML形式。如果没有,你可以使用@XmlAnyElement,但是你最终会得到DOM对象,你必须做一些手动映射才能达到你想要的结果。 – 2014-09-27 08:41:09