jaxb idref 字符串适配器

jaxb idref string adapter

我使用的是标准 xml 架构,称为 isosts,我需要使用 jaxb 将架构转换为 java class。在这个 xml 模式中,许多元素的属性 rid 类型为 xs:IDREFS <xs:attribute name="rid" type="xs:IDREFS">。 Jaxb 将 xs:IDREFS 转换为对象列表。

根据我的需要,我希望 jaxb 在所有生成的 java class 中将类型 xs:IDREFS 设为 java 字符串类型。而在marshall/unmarshall时间内,属性rid的值应该全部作为字符串处理。由于这是一个标准模式,我必须自定义 jaxb。我不确定这是否可以在 jaxb 绑定或适配器中完成以及如何完成。谁能帮帮我?

这个绑定文件(我们称之为“binding.xjb”)强制类型为字符串:

<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
      xsi:schemaLocation=" http://java.sun.com/xml/ns/jaxb
                           http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
      version="2.1">

<bindings schemaLocation="SomeSchemaName.xsd" node="/xs:schema">
    <bindings node="//xs:attribute[@name='rid']">
        <property>
          <baseType>
            <javaType name="java.lang.String"></javaType>
          </baseType>
        </property>
    </bindings>
</bindings>

</bindings>

使用

编译架构
xjc -b binding.xjb SomeSchemaName.xsd