我需要在包(.jar)中从我的XML Schema(XSD)生成许多类。 如何将这些类配置为可序列化?
(我正在使用Eclipse和JAX-B)
答案 0 :(得分:22)
如果您使用的是XJC,我建议您阅读此参考文献:JavaTM Architecture for XML Binding: JAXB RI Vendor Extensions Customizations :
您必须在架构中添加aditional命名空间定义以添加xjc aditional标记:
<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值(这是一个可选属性)。
答案 1 :(得分:5)
我找到了
<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>