XJC - 命令行中的JAXB注释

时间:2017-11-22 14:48:50

标签: java xsd jaxb xjc

我目前正致力于从XSD文件生成Java类。 我使用限制创建了一个XSD文件。 作为示例heredown,我想以特定格式MMYY解析日期。 例如:

 <xsd:element name="dummyDate" minOccurs="0">
  <xsd:simpleType>
    <xsd:restriction base="xsd:date">
      <xsd:pattern value="MMYY" />
    </xsd:restriction>
  </xsd:simpleType>
</xsd:element>

但是,生成的类不包含/导入限制。

protected XMLGregorianCalendar dummyDate;

    /**
     * Gets the value of the dummyDate property.
     * 
     * @return
     *     possible object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public XMLGregorianCalendar getdummyDate() {
        return dummyDate;
    }

    /**
     * Sets the value of the dummyDate property.
     * 
     * @param value
     *     allowed object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public void setdummyDate(XMLGregorianCalendar value) {
        this.dummyDate= value;
    }

由于我已经阻止了这个问题,我提出了以下两个问题:

  • 为了实现这些目标,最好的方法是什么 解析时的限制?
  • 如何实施?

HINTS

  1. JAXB Bindings [https://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.5/tutorial/doc/JAXBUsing4.html]
  2. krasa-jaxb-tools [https://github.com/krasa/krasa-jaxb-tools]
  3. 更新 所以我创建了我的绑定文件:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <jaxb:bindings version="2.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
        xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        jaxb:extensionBindingPrefixes="xjc">
    
        <jaxb:globalBindings>
            <xjc:simple />
            <xjc:serializable uid="-1" />
            <jaxb:javaType name="java.util.Date" xmlType="xs:date" 
        parseMethod="general.CalendarFormatConverter.parseDate"
        printMethod="general.CalendarFormatConverter.printDate" />
        </jaxb:globalBindings>
    </jaxb:bindings>
    

    CalendarFormatConverter.java:

    package general;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class CalendarFormatConverter {
         /**
         * Calendar to custom format print to XML.
         * 
         * @param val
         * @return
         */
        public static Date parseDate(String val) {
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMYY");
            Date date = null;
            try {
                date = simpleDateFormat.parse(val);
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return date;
        }
    
        /**
         * Date to custom format print to XML.
         * 
         * @param val
         * @return
         */
        public static String printDate(Date val) {
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMYY");
            return simpleDateFormat.format(val);
        }
    }
    

    所以我现在可以转换了,但是日期的格式与重新结合不匹配...

0 个答案:

没有答案