是否可以在没有适配器的情况下绑定到字符串?
我有一个第三方架构,其属性类型(日期)错误,并且在外部文件绑定中,我将其转换为字符串,以便使用正确的类型生成类。 “问题”是它通过一个新类“Adapter1”来实现这一点,该类非常微不足道,我希望不要生成它。
属性为:
<xs:attribute type="xs:date" name="curso" use="required">
</xs:attribute>
当前绑定是:
<jxb:bindings
version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<jxb:bindings
schemaLocation="file.xsd"
node="/xs:schema">
<jxb:bindings node="//xs:element[@name='exportacion_horarios']//xs:attribute[@name='curso']" >
<jxb:property>
<jxb:baseType >
<jxb:javaType name="java.lang.String" />
</jxb:baseType>
</jxb:property>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
适配器类是:
package com.penalara.ghc_importar_exportar.modelo.personalizados.itaca3.exportacion;
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class Adapter1
extends XmlAdapter<String, String>
{
public String unmarshal(String value) {
return new String(value);
}
public String marshal(String value) {
if (value == null) {
return null;
}
return value.toString();
}
}
也许告诉“xjc”使用内部默认适配器进行字符串到字符串。
您可以将
<jxb:javaType name="java.lang.String" />
指令更改为XJC的指令,这样就可以定义adapter
参数并避免这些奇怪的适配器类。
这将给出类似以下绑定文件的内容:
<jxb:bindings
version="1.0"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
extensionBindingPrefixes="xjc">
<jxb:bindings
schemaLocation="file.xsd"
node="/xs:schema">
<jxb:bindings node="//xs:element[@name='exportacion_horarios']//xs:attribute[@name='curso']" >
<jxb:property>
<jxb:baseType >
<xjc:javaType name="java.lang.String" adapter="com.penalara.ghc_importar_exportar.modelo.ToStringAdapter" />
</jxb:baseType>
</jxb:property>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
请注意,这里所说的
com.penalara.ghc_importar_exportar.modelo.ToStringAdapter
是您的内部类,它将扩展 XmlAdapter<String, String>