java - 如何将 java.time.Duration 映射到 XML

标签 java xml jaxb java-8 java-time

我有一个数据类型为:

private java.time.Duration duration

类属性是这样设置的:

object.setDuration(Duration.ofSeconds(2));

我想将我的对象编码为 xml,以便持续时间看起来像那样

<duration>PT2S</duration>

定义ISO 8601

据我了解,Jaxb 使用 default binding data types喜欢:

xsd:duration    javax.xml.datatype.Duration

但在我的 bean 中我不想包含任何 xml 依赖项。

我看到了编写包装器的可能性,我可以在其中添加 XmlAdapter , 但我不知道如何将 java.time.Duration 转换为 javax.xml.datatype.Duration

最佳答案

我是通过四处搜索 API 发现的。这是我的代码:

import java.time.Duration
import javax.xml.bind.annotation.adapters.XmlAdapter;
import javax.xml.datatype.DatatypeFactory;

public class DurationAdapter extends XmlAdapter<javax.xml.datatype.Duration, Duration>
{
    @Override
    public Duration unmarshal(javax.xml.datatype.Duration v) throws Exception {
        return Duration.parse(v.toString());
    }

    @Override
    public javax.xml.datatype.Duration marshal(Duration v) throws Exception {
        return DatatypeFactory.newInstance().newDuration(v.toString());
    }
}

关于java - 如何将 java.time.Duration 映射到 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27314093/

相关文章:

java - 通过 @XmlPath MOXy 注释解码嵌套集合

java - 防止从没有命名空间的 XSD 生成重复类

java - 在 Jboss AS 7.1 Final 上找不到模块

dom - 如何在 XML 文件中添加换行符?

xml - Json、XML 和 RDF 之间的区别

android - 如何在xml中添加多个框架

java - 无法解析方法 'setImageResource' (android.graphics.drawable.Drawable)

java - Kafka-server-stop 无法在 Windows 中进行受控关闭

java - 如何在java中使用反射调用类的main()方法

java - 为 XML 持久性选择框架