[英]Convert date type to string in jaxb using bindings
我收到錯誤消息:
無法將xsd:date轉換為java.lang.String類型
我正在使用帶有CXF XJC插件的binding.xml文件
XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Date" type="xsd:date"/>
<xsd:element name="Audit">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Creation">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Date"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
binding.xml
<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:xsd="http://www.w3.org/2001/XMLSchema">
<jaxb:bindings>
<jaxb:globalBindings>
<jaxb:javaType name="java.lang.String" xmlType="xsd:date"/>
</jaxb:globalBindings>
</jaxb:bindings>
</jaxb:bindings>
cxf xjc插件:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-xjc-plugin</artifactId>
<version>3.0.3</version>
<executions>
<execution>
<id>generate-resources</id>
<phase>generate-resources</phase>
<configuration>
<defaultOptions>
<bindingFiles>
<bindingFile>${basedir}/src/main/resources/META-INF/binding.xml</bindingFile>
</bindingFiles>
<noAddressBinding>true</noAddressBinding>
</defaultOptions>
<sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot>
<xsdOptions>
<xsdOption>
<xsd>${basedir}/src/main/resources/xsd/Misc.xsd</xsd>
<packagename>com.mycomp.ext.schema</packagename>
<extension>true</extension>
</xsdOption>
</xsdOptions>
</configuration>
<goals>
<goal>xsdtojava</goal>
</goals>
</execution>
</executions>
</plugin>
生成的代碼包含XMLGregorianCalendar而不是String
@XmlElement(name = "Date", required = true)
@XmlSchemaType(name = "date")
protected XMLGregorianCalendar date;
有什么建議嗎?
如果將xml類型更改為xsd:date xsd:string,則它應該可以正常工作
抱歉,如果您需要在Java中將其作為字符串字段訪問,則應該使用xsd:string類型而不是xsd:date類型定義該架構。
選項一:如果要在Java中將該字段用作日期,則可以稍后在Java中對其進行格式化。
選項二:如果要使模式處理數據類型,則應將其定義為xsd:date並使用XMLGregorianCalendar,可以稍后在Java中將其轉換為Calendar或普通的Date java對象。 這樣,日期格式驗證將由架構本身完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.