如何通过JAXB外部绑定自定义文件设置@ XmlType.namespace

时间:2015-01-06 07:50:34

标签: java jaxb

我正在使用JAXB处理多个XML文档。

我的问题是我无法更改相关的xsd,我不想修改生成的类。

我想要做的是使用JAXB Binding自定义文件来实现所需的结果。

我需要做的就是执行相当于使用@XmlType.namespace注释。

是否可以通过JAXB绑定自定义文件设置@XmlType.namespace注释?

1 个答案:

答案 0 :(得分:5)

免责声明:我是jaxb2-annotate-plugin的作者。

您可以使用jaxb2-annotate-plugin向模式派生类添加任意注释。 @XmlType将类似于:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
    xmlns:annox="http://annox.dev.java.net"
    jaxb:extensionBindingPrefixes="xjc annox"
    version="2.1">

    <jaxb:bindings schemaLocation="schema.xsd" node="/xs:schema">
        <jaxb:bindings node="xs:complexType[@name='someType']">
            <annox:annotateClass>@javax.xml.bind.annotation.XmlType(namespace="urn:test")</annox:annotateClass>
        </jaxb:bindings>
    </jaxb:bindings>

</jaxb:bindings>

如果您已经有@XmlType,则自定义注释将“合并”到其中。