且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

无法从xsd生成java.util.Calendar - 获取XmlGregorianCalendar

更新时间:2023-02-18 23:19:21

生成对象时,可以使用JAXB绑定文件,如示例7中所示。 cxf-codegen-plugin文档 。根据您要使用的类型(日历,日期等),您需要指定适当的适配器。要使用Calendar,JAXB提供适配器javax.xml.bind.DatatypeConverter。要将其与dateTime,date和time一起使用,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提供org.apache.cxf.xjc.runtime.DataTypeAdapter在cxf-xjc-runtime中。

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

推荐文章