无法从 xsd 生成 java.util.Calendar - 获取 XmlGregorianCalendar [英] Unable to generate java.util.Calendar from xsd - getting XmlGregorianCalendar

查看:26
本文介绍了无法从 xsd 生成 java.util.Calendar - 获取 XmlGregorianCalendar的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以从 xsd 文件生成具有 Claendar 类型字段的实体?我正在尝试 xs:date 和 xs:dateTime 但仍然获得 XMLGregarionCalendar.我正在使用 cxf-codegen-plugin 和 jaxb bninding.谢谢.保罗.

Is it possible to generate entities with Claendar type fields from xsd files? I am trying both xs:date and xs:dateTime but still getting XMLGregarionCalendar. I am using cxf-codegen-plugin and jaxb bninding. Thanks. Paul.

推荐答案

当您生成对象时,您可以使用 JAXB 绑定文件,如 cxf-codegen-plugin 文档.根据您要使用的类型(日历、日期等),您需要指定适当的适配器.为了使用 Calendar,JAXB 提供了适配器 javax.xml.bind.DatatypeConverter.要将它与 dateTime、日期和时间一起使用,JAXB 绑定文件应该是

When you generate your objects you can use a JAXB binding file, as demonstrated in Example 7 of the cxf-codegen-plugin documentation. Depending on what type you want to use (Calendar, Date, etc.), you will need to specify an appropriate adapter. To use Calendar, JAXB provides the adapter javax.xml.bind.DatatypeConverter. To use it with dateTime, date, and time, the JAXB bindings file should be

<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings version="2.1"
              xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
              xmlns:xs="http://www.w3.org/2001/XMLSchema"
              xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">

    <jxb:globalBindings>
        <!-- use Calendar instead of XMLGregorianCalendar -->
        <jxb:javaType name="java.util.Calendar" xmlType="xs:dateTime"
            parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime"
            printMethod="javax.xml.bind.DatatypeConverter.printDateTime"/>

        <jxb:javaType name="java.util.Calendar" xmlType="xs:date"
            parseMethod="javax.xml.bind.DatatypeConverter.parseDate"
            printMethod="javax.xml.bind.DatatypeConverter.printDate"/>

        <jxb:javaType name="java.util.Calendar" xmlType="xs:time"
            parseMethod="javax.xml.bind.DatatypeConverter.parseTime"
            printMethod="javax.xml.bind.DatatypeConverter.printTime"/>

    </jxb:globalBindings>        
</jxb:bindings>

如果你想使用 Date 代替,CXF 在 cxf-xjc-runtime 中提供了 org.apache.cxf.xjc.runtime.DataTypeAdapter.

If you want to use Date instead, CXF provides org.apache.cxf.xjc.runtime.DataTypeAdapter in cxf-xjc-runtime.

这篇关于无法从 xsd 生成 java.util.Calendar - 获取 XmlGregorianCalendar的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆