Osc*_*nco 6 java xml jaxb java-8 java-time
我有一个数据类型的bean:
private java.time.Duration duration
Run Code Online (Sandbox Code Playgroud)
class属性设置如下:
object.setDuration(Duration.ofSeconds(2));
Run Code Online (Sandbox Code Playgroud)
我想将我的对象编组为xml,以便持续时间看起来像那样
<duration>PT2S</duration>
Run Code Online (Sandbox Code Playgroud)
如ISO 8601所定义
据我所知,Jaxb使用默认绑定数据类型,如:
xsd:duration javax.xml.datatype.Duration
Run Code Online (Sandbox Code Playgroud)
但在我的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());
}
}
Run Code Online (Sandbox Code Playgroud)