WSDL沒有處理XJB。 xjb用於xjc編譯器作爲-b參數傳遞。 即
xjc -b <file>
文檔:Customizing JAXB Binding
如果你使用Maven插件來生成JAXB Java類的任何人有綁定配置即
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<configuration>
<defaultOptions>
<bindingFiles>
<bindingFile>${project.interfaces.basedir}Configuration/Bindings/common-binding.xjb</bindingFile>
</bindingFiles>
或
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<configuration>
<schemaDirectory>${basedir}/src/main/resources/XMLSchema</schemaDirectory>
<bindingDirectory>${basedir}/src/main/resources/Bindings</bindingDirectory>
</configuration>
和所以......
XJB因爲它是非常簡單的:
<jaxb:bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc">
<jaxb:globalBindings>
<jaxb:serializable uid="1" />
<jaxb:javaType name="java.util.Calendar" xmlType="xsd:dateTime"
parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime"
printMethod="javax.xml.bind.DatatypeConverter.printDateTime" />
<jaxb:javaType name="java.util.Calendar" xmlType="xsd:date"
parseMethod="javax.xml.bind.DatatypeConverter.parseDate" printMethod="javax.xml.bind.DatatypeConverter.printDate" />
<jaxb:javaType name="java.util.Calendar" xmlType="xsd:time"
parseMethod="javax.xml.bind.DatatypeConverter.parseTime" printMethod="javax.xml.bind.DatatypeConverter.printTime" />
</jaxb:globalBindings>
,你可以看到它定義了從XSD轉換:DATETIME,XSD:日期和xsd:時間類型爲java.util.Calendar。
我不推薦使用java.util.Date。日期處理有很多麻煩(尤其是在不同的時區)。 最好使用java.util.Calendar。日曆是很容易處理和默認轉換器的實現是有在JDK:
javax.xml.bind.DatatypeConverter
但是,如果你仍然想使用java.Util.Date你需要有自己的小轉爐用了兩個靜態方法「解析」和「打印」,然後將其設置在xjb中。在XJB即
public class MyDateConverter {
public static java.util.Date parse(String xmlDateTime) {
return javax.xml.bind.DatatypeConverter.parseDateTime(xmlDateTime).getTime();
}
public static String print(Date javaDate) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(javaDate.getTime());
return javax.xml.bind.DatatypeConverter.printDateTime(calendar);
}
}
您的對話會是這樣的:
<jaxb:javaType name="java.util.Date" xmlType="xsd:dateTime"
parseMethod="MyDatatypeConverter.parse"
printMethod="MyDatatypeConverter.print" />
僅供參考......'java.util.Date'被['java.time.Instant']代替(https://docs.oracle.com/javase/8/docs/api/java/time/Instant .html)在Java 8和更高版本中,都表示在[UTC](https://en.wikipedia.org/wiki/Coordinated_Universal_Time)中的時間軸上。和['XMLGregorianCalendar'](https://docs.oracle.com/javase/8/docs/api/javax/xml/datatype/XMLGregorianCalendar.html)更適合映射到['java.time.ZonedDateTime'](http ://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html)來保留時區信息。轉換:'myXmlGregCal.toGregorianCalendar()。toZonedDateTime()' –