我有一个简短的问题:
从 xsd 生成 xjc 类后,我的对象需要 Calendar,这就是我提供的。但在将其编组为 XML 后,我的日期格式如下:
<InfoDateTime v="2013-09-03T00:00:00+02:00"/>
而我想拥有:
<InfoDateTime v="2013-09-03T00:00:00Z"/>
我不使用带注释的 jaxb,而是使用绑定文件,但是是否可以不创建可以解析日期和字符串的类?
谢谢!
当您使用时,Calendar
您可以设置TimeZone
您希望使用的:
根
下面是一个具有 2 个映射Calendar
字段的简单 Java 对象。
import java.util.Calendar;
import javax.xml.bind.annotation.*;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Root {
Calendar defaultTimeZone;
Calendar setTimeZone;
}
演示
Calendar
在下面的演示代码中,我们将创建两个on实例,defaultTimeZone
它将具有默认时区(我的环境是加拿大/东部),并且setTimeZone
我们将指定 GMT。
import java.util.*;
import javax.xml.bind.*;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Root.class);
Root root = new Root();
root.defaultTimeZone = Calendar.getInstance();
root.setTimeZone = Calendar.getInstance();
root.setTimeZone.setTimeZone(TimeZone.getTimeZone("GMT"));
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, System.out);
}
}
输出
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<defaultTimeZone>2013-09-03T09:40:59.443-04:00</defaultTimeZone>
<setTimeZone>2013-09-03T13:40:59.443Z</setTimeZone>
</root>