如何将 joda-time 与 jaxb 绑定
How to bind joda-time with jaxb
我有一个 class 像这样
@XmlRootElement(name = "executionStats")
public class ScriptExecutionStatistics {
private DateTime start;
private DateTime end;
public ScriptExecutionStatistics() { }
public ScriptExecutionStatistics(DateTime start, DateTime end) {
this.start = start;
this.end = end;
}
@XmlAttribute
public DateTime getStart() {
return start;
}
public void setStart(DateTime start) {
this.start = start;
}
@XmlAttribute
public DateTime getEnd() {
return end;
}
public void setEnd(DateTime end) {
this.end = end;
}
}
我想在xml中序列化它,所以它看起来像这样
<scriptExecutionStatistics start="17.08.2015 18:17:00" end="17.08.2015 18:18:00" />
我知道如果我想将 joda time 与 jaxb 绑定,则需要一个适配器,但令人困惑的是我没有真正理解它。所以我从
开始
public class DateTimeAdapter extends XmlAdapter<ScriptExecutionStatistics, DateTime>{
private static DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
@Override
public DateTime unmarshal(ScriptExecutionStatistics vt) throws Exception {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public ScriptExecutionStatistics marshal(DateTime bt) throws Exception {
ScriptExecutionStatistics stats = new ScriptExecutionStatistics();
}
}
你能帮我完成它吗?
提前致谢
DateTimeAdapter
应该 marshal/unmarshal DateTime
to/from String
例如
public class DateTimeAdapter extends XmlAdapter<String, DateTime>{
private static DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
@Override
public DateTime unmarshal(String vt) throws Exception {
return dtf.parseDateTime(vt);
}
@Override
public String marshal(DateTime bt) throws Exception {
return dtf.print(bt);
}
}
您还应该在 ScriptExecutionStatistics
中用 @XmlJavaTypeAdapter
注释
注释适当的 fields/getters
@XmlJavaTypeAdapter(DateTimeAdapter.class)
@XmlAttribute
public DateTime getStart() {
return start;
}
我有一个 class 像这样
@XmlRootElement(name = "executionStats")
public class ScriptExecutionStatistics {
private DateTime start;
private DateTime end;
public ScriptExecutionStatistics() { }
public ScriptExecutionStatistics(DateTime start, DateTime end) {
this.start = start;
this.end = end;
}
@XmlAttribute
public DateTime getStart() {
return start;
}
public void setStart(DateTime start) {
this.start = start;
}
@XmlAttribute
public DateTime getEnd() {
return end;
}
public void setEnd(DateTime end) {
this.end = end;
}
}
我想在xml中序列化它,所以它看起来像这样
<scriptExecutionStatistics start="17.08.2015 18:17:00" end="17.08.2015 18:18:00" />
我知道如果我想将 joda time 与 jaxb 绑定,则需要一个适配器,但令人困惑的是我没有真正理解它。所以我从
开始public class DateTimeAdapter extends XmlAdapter<ScriptExecutionStatistics, DateTime>{
private static DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
@Override
public DateTime unmarshal(ScriptExecutionStatistics vt) throws Exception {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public ScriptExecutionStatistics marshal(DateTime bt) throws Exception {
ScriptExecutionStatistics stats = new ScriptExecutionStatistics();
}
}
你能帮我完成它吗? 提前致谢
DateTimeAdapter
应该 marshal/unmarshal DateTime
to/from String
例如
public class DateTimeAdapter extends XmlAdapter<String, DateTime>{
private static DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
@Override
public DateTime unmarshal(String vt) throws Exception {
return dtf.parseDateTime(vt);
}
@Override
public String marshal(DateTime bt) throws Exception {
return dtf.print(bt);
}
}
您还应该在 ScriptExecutionStatistics
中用 @XmlJavaTypeAdapter
注释
@XmlJavaTypeAdapter(DateTimeAdapter.class)
@XmlAttribute
public DateTime getStart() {
return start;
}