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
我使用的是标准 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