Подтвердить что ты не робот

Как сгенерировать классы из XSD, которые реализуют сериализуемое?

Мне нужно создать много классов из моей XML-схемы (XSD) в пакете (.jar). Как настроить эти классы для сериализации?

(Я использую Eclipse и JAX-B)

4b9b3361

Ответ 1

Если вы используете XJC, я рекомендую вам прочитать эту ссылку: Архитектура JavaTM для привязки XML: настройки JAXB RI Vendor Extensions:

Вы должны добавить определение расширений прокси-адресов схемы для добавления дополнительной разметки xjc:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
           xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
           jaxb:extensionBindingPrefixes="xjc"
           jaxb:version="1.0">

Затем, включая <xjc:serializable> node внутри <jaxb:globalBindings>:

<xs:annotation>
   <xs:appinfo>
      <jaxb:globalBindings generateIsSetMethod="true">
          <xjc:serializable uid="12343"/>
      </jaxb:globalBindings>
   </xs:appinfo>
</xs:annotation>

Это приведет к тому, что все конкретные классы реализуют интерфейс Serializable. Кроме того, вы можете определить значение UUID результирующих классов (необязательный атрибут).

Ответ 2

Я нашел

<schema
  xmlns="http://www.w3.org/2001/XMLSchema"
  xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
  xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
  jaxb:extensionBindingPrefixes="xjc"
  jaxb:version="1.0"  
  >

  <!-- FORCE ALL CLASSES IMPLEMENTS SERIALIZABLE -->
  <annotation>
    <appinfo>
      <jaxb:globalBindings generateIsSetMethod="true">
        <xjc:serializable uid="1"/>
      </jaxb:globalBindings>
    </appinfo>
  </annotation>

   ....

</schema>