Как сгенерировать классы из XSD, которые реализуют сериализуемое? Мне нужно создать много классов из моей XML-схемы (XSD) в пакете (.jar). Как настроить эти классы для сериализации? (Я использую Eclipse и JAX-B) Ответ 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>
Ответ 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>