2013-09-19 5 views
1

Я генерирую классы моделей из xsd, используя плагин maven jaxb2. XSD задает определенные элементы с типом = хз: маркер следующим образом:JAXB привязка для переопределения или удаления XMLSchemaType xs: token

<xs:element name="medium_text" type="xs:token"/> 

Это приводит к следующим аннотации добавляется к полю в сгенерированной модели:

@XmlJavaTypeAdapter(CollapsedStringAdapter.class) 
@XmlSchemaType(name="token") 
protected String medium_text; 

Проблема в том, что CollapsedStringAdapter удаляет новые строки и т. д. (это правильное поведение для xs: токена), но я хочу этого избежать.

Как удалить тип элемента xs: token из элемента или изменить его на xs: string с помощью привязок JAXB? Легким решением является удаление типа из xsd, но возможно ли это с помощью привязок без изменения xsd?

ответ

1

Вы можете использовать следующие в своем файле привязки.

<jxb:bindings schemaLocation = "schema.xsd"> 
    <jxb:bindings node = "//xs:element[@name='medium_text']"> 
      <jxb:javaType name="java.lang.String"/> 
    </jxb:bindings> 
</jxb:bindings> 

Это приводит к следующему:

@XmlElement(name = "mid_text", required = true) 
@XmlJavaTypeAdapter(Adapter1 .class) 
@XmlSchemaType(name = "token") 
protected String midText; 

Adapter1 однако безвреден и не изменяет значение строки.

Кроме того, если вы хотите сделать это, чтобы все ваши tokens вы можете добавить globalBinding

<jxb:globalBindings> 
      <jxb:javaType name="java.lang.String" 
       xmlType="xs:token" /> 
    </jxb:globalBindings> 

 Смежные вопросы

  • Нет связанных вопросов^_^