XJB绑定文件中的XJC范围

时间:2018-08-28 22:03:25

标签: binding xsd jaxb xjc

我有XJB绑定文件,我想用java.util.Date替换所有日期,并且我想要一个特定元素(名称为“ MyElementName”)来扩展我的自定义类:

My XJB file:

<jaxb:bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema"
           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
           jaxb:version="2.0">

    <!-- replace JAXBElement with real object where nillable="true" and minOccurs="0" -->
    <jaxb:globalBindings generateElementProperty="false">

        <!-- replace all dates with java.util.Date -->
        <jaxb:javaType xmlType="xsd:dateTime" name="java.util.Date"
                       parseMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.parseDateTime"
                       printMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.printDateTime"/>
        <jaxb:javaType xmlType="xsd:date" name="java.util.Date"
                       parseMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.parseDateTime"
                       printMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.printDateTime"/>
        <jaxb:javaType xmlType="xsd:time" name="java.util.Date"
                       parseMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.parseDateTime"
                       printMethod="cz.i.sdp.nsessapi.util.DataTypeConverter.printDateTime"/>
    </jaxb:globalBindings>

    <!-- Only element with name 'MyElementName' should extend 
    <jaxb:bindings schemaLocation="mySchema.xsd">
      <jaxb:bindings node="//xs:element[@name='MyElementName']">
        <xjc:superClass name="net.test.Whatever"/>
      </jaxb:bindings>
    </jaxb:bindings>

</jaxb:bindings>

除非XJC增强功能位于<globalBindings>内,否则它们将被静默忽略。但是所有生成的类都将扩展我的自定义类,而我不想要那样。

是否可以将全局绑定与“作用域”绑定一起指定?

here中提到了“全局范围”,“模式范围”,“定义范围”和“组件范围”,并且他们说:“特别地,朝向金字塔顶部的声明继承并取代了它们下方的声明”。

0 个答案:

没有答案