如何从实现可序列化的XSD生成类?


问题内容

我需要从包(.jar)中的XML模式(XSD)生成许多类。如何将这些类配置为可序列化?

(我正在使用Eclipse和JAX-B)


问题答案:

如果您使用的是XJC,建议您阅读以下参考:用于XML绑定的JavaTM体系结构:JAXB
RI供应商扩展定制

您必须在架构附加名称空间定义中添加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>节点<jaxb:globalBindings>

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

这将导致所有具体的类都实现Serializable接口。另外,您可以定义结果类的UUID值(这是可选属性)。