Jaxb 将属性绑定到没有适配器的字符串

问题描述 投票:0回答:1

是否可以在没有适配器的情况下绑定到字符串?

我有一个第三方架构,其属性类型(日期)错误,并且在外部文件绑定中,我将其转换为字符串,以便使用正确的类型生成类。 “问题”是它通过一个新类“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”使用内部默认适配器进行字符串到字符串。

xsd xml-binding
1个回答
0
投票

您可以将

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

© www.soinside.com 2019 - 2024. All rights reserved.