Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 命令行中的XJC-JAXB注释_Java_Xsd_Jaxb_Xjc - Fatal编程技术网

Java 命令行中的XJC-JAXB注释

Java 命令行中的XJC-JAXB注释,java,xsd,jaxb,xjc,Java,Xsd,Jaxb,Xjc,我目前正致力于从XSD文件生成Java类。 我使用限制创建了一个XSD文件。 例如,我想以特定格式MMYY解析一个日期。 例如: 由于我被这个问题所困扰,我有以下两个问题: 为了实现这些目标,最好的方法是什么 解析时的限制 如何实施 提示: JAXB绑定[ krasajaxb工具[ 更新 所以我创建了一个绑定文件: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <jaxb:bindings version="

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

由于我被这个问题所困扰,我有以下两个问题:

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

  • JAXB绑定[
  • krasajaxb工具[
  • 更新 所以我创建了一个绑定文件:

    <?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>
    

    因此,我现在可以转换,但日期的格式与限制不匹配…

    您可以在编组和解编期间根据架构进行验证,这也会检查XSD中的限制。@Jesper:确实如此,但计划是将其交给技术水平较低的人处理,此人只会执行一行command…所以越少的切换越好…您研究过jaxb全局绑定了吗?也许类似的东西会起作用:您可以在编组和解编组过程中根据模式进行验证,这也会检查XSD中的限制。@Jesper:的确,但计划是将其交给不太复杂的人处理从技术上讲,这个人只执行一行命令…所以越少的切换越好…您已经研究过jaxb全局绑定了吗?也许这样的东西会起作用:
    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;
        }
    
    <?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>
    
    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);
        }
    }