How to generate classes from XSD that implements serializable?

前端 未结 2 682
后悔当初
后悔当初 2020-12-15 08:03

I need to generate many classes from my XML Schema (XSD) in a package (.jar). How can I configure these classes to be serializable?

(I\'m using Eclipse and JAX-B)

相关标签:
2条回答
  • 2020-12-15 08:43

    I've found

    <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>
    
    0 讨论(0)
  • 2020-12-15 09:02

    If you are using XJC, I recomend you to read this reference: JavaTM Architecture for XML Binding: JAXB RI Vendor Extensions Customizations :

    You have to add in your schema aditional namespaces definition to add xjc aditional markup:

    <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">
    

    Then, including an <xjc:serializable> node within <jaxb:globalBindings>:

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

    This will cause that all the concrete classes implement the Serializable interface. Also, you can define the UUID value of the resulting classes (that's an optional attribute).

    0 讨论(0)
提交回复
热议问题