5

我有一个简短的问题:

从 xsd 生成 xjc 类后,我的对象需要 Calendar,这就是我提供的。但在将其编组为 XML 后,我的日期格式如下:

<InfoDateTime v="2013-09-03T00:00:00+02:00"/>

而我想拥有:

<InfoDateTime v="2013-09-03T00:00:00Z"/>

我不使用带注释的 jaxb,而是使用绑定文件,但是是否可以不创建可以解析日期和字符串的类?

谢谢!

4

1 回答 1

0

当您使用时,Calendar您可以设置TimeZone您希望使用的:

Java 模型

下面是一个具有 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>
于 2013-09-03T13:37:05.397 回答