У меня есть один xml, как показано ниже, мне нужно использовать этот xml для заполнения объекта ниже. Мне нужна дата в нужном формате и преобразование даты в метку времени.Я сделал это, используя приведенный ниже код.
<customer>
<name>john</name>
<date>10/10/18</date>
<customer>
@XmlRootElement(name="customer")
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
@XmlElement(name="name")
private String name;
@XmlJavaTypeAdapter (DateSort.class)
@XmlElement(name="date")
private String date;
@XmlJavaTypeAdapter (TimeStampSort.class)
@XmlElement(name="date")
private long dateTimestamp;
setters()/getters()
}
public class DateSort extends XmlAdapter<String, String> implements DateFormats {
@Override
public String marshal(String date) throws Exception {
return dateFormat.format(date);
}
@Override
public String unmarshal(String date) throws ParseException {
Date pubDate = sourceDateFormat.parse(date);
return outputDateFormat.format(pubDate);
}
}
public class TimeStampSort extends XmlAdapter<String, Long> implements DateFormats {
@Override
public Long unmarshal(String date) throws Exception {
Date newDate = sourceDateFormat.parse(date);
return Long.parseLong(monthFormat.format(newDate));
}
@Override
public String marshal(Long date) throws Exception {
return new Date(date).toString ();
}
}
Проблема, с которой я здесь сталкиваюсь, заключается в том, что XmlJavaTypeAdapter вызывается для «date», но не для атрибута dateTimestamp.Я не уверен, почему существует такое поведение.
Я пытался сделать эту конфигурацию
@XmlJavaTypeAdapter (value=DateSort.class, type=Long.class)
@XmlElement(name="PUBDATE", type=Long.class)
@XmlJavaTypeAdapter (value=DateSort.class, type=long.class)
@XmlElement(name="PUBDATE", type=long.class)
и преобразовать тип в
private Long timeStamp;
Ничего из этого не сработало.
Проблема здесь в том, что мне нужно, чтобы один и тот же элемент отображался в несколько полей pojo с преобразованиями.Существуют ли какие-либо дополнительные аннотации, которые необходимо добавить для достижения этой цели?
Пожалуйста, помогите мне решить проблему, связанную с тем, почему не вызывается TimeStampSort Adapter, когда вызывается DateSort и работает нормально.