jaxb idref字符串适配器

时间:2015-01-15 18:30:02

标签: java jaxb

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

根据我的需要,我希望jaxb将类型xs:IDREFS设置为所有生成的java类中的java字符串类型。在marshall / unmarshall时间,属性rid的值应该全部作为字符串处理。由于这是一个标准架构,我必须自定义jaxb。我不确定这是否可以在jaxb绑定或适配器中完成以及如何执行此操作。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

此绑定文件(让我们调用它&#34; binding.xjb)强制类型为String:

<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