假设您有一个包含元素的XML,如下所示:
<card expirydate="012017"> <!-- various attributes exists but it's unnecessary for this case.
正如您所看到的,前2个字符表示月份,最后4个数字表示年份。
我想将它建模为Month
对象,如下所示:
/**
* @author Buhake Sindi
* @since 19 January 2015
*
*/
public class Month implements Serializable {
/**
*
*/
private static final long serialVersionUID = -3746059271757081350L;
private int month;
private int year;
/**
*
*/
public Month() {
// TODO Auto-generated constructor stub
}
/**
* @param month
* @param year
*/
public Month(int month, int year) {
super();
PreConditions.checkArgument(month >= 1 && month <= 12, "Invalid month specified.");
this.month = month;
this.year = year;
}
/**
* @return the month
*/
public int getMonth() {
return month;
}
/**
* @param month the month to set
*/
public void setMonth(int month) {
this.month = month;
}
/**
* @return the year
*/
public int getYear() {
return year;
}
/**
* @param year the year to set
*/
public void setYear(int year) {
this.year = year;
}
}
我在JAXB中使用什么类型的转换器/适配器将属性映射到Object,反之亦然?
答案 0 :(得分:1)
您可以为此用例创建XmlAdapter
,将Month
转换为String
。
public class MonthAdapter extends XmlAdapter<String, Month>
然后在marshal / unmarshal方法中,您可以使用自己的自定义逻辑在Month
和String
之间进行转换。