我有一个数据类型为:
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/