用jaxb重命名xsd中的enum

laik7k3q  于 2021-07-07  发布在  Java
关注(0)|答案(1)|浏览(310)

我想知道是否有可能,如果有,如何重命名一个xsd文件枚举。

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
    targetNamespace="blabla:xsd:3" 
    elementFormDefault="unqualified" attributeFormDefault="unqualified" version="3.1">

    <xsd:simpleType name="IrrelevantEnumerationType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="IRRELEVANT1"/>
            ...
            ...
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="RelevantEnumerationType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="RE_LEVANT"/>
            <xsd:enumeration value="IRRELEVANT2"/>
        </xsd:restriction>
    </xsd:simpleType>
</xsd:schema>

生成的java代码如下所示

@XmlType(name = "RelevantEnumerationType", namespace = "blabla:xsd:3")
@XmlEnum
public enum RelevantEnumerationType {

    RE_LEVANT,
    IRRELEVANT2;

    public String value() {
        return name();
    }

    public static RelevantEnumerationType fromValue(String v) {
        return valueOf(v);
    }

}

jaxb文件。

<?xml version="1.0"?>
<jxb:bindings version="2.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
              xmlns:xjc= "http://java.sun.com/xml/ns/jaxb/xjc"
              xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <jxb:bindings>
        <jxb:globalBindings>
            <xjc:simple/>
        </jxb:globalBindings>
    </jxb:bindings>
</jxb:bindings>

我删除了大部分不相关的信息,只保留了原来的结构。
如您所见,我有一个生成为相关的枚举,我希望在生成java代码时删除下划线。
所以结果应该是相关的。

hm2xizp9

hm2xizp91#

这样就行了

<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <bindings schemaLocation="schema.xsd">
        <bindings node="//xs:simpleType[@name='RelevantEnumerationType']//*//xs:enumeration[@value='RE_LEVANT']">
            <typesafeEnumMember name="RELEVANT"/>
        </bindings>
    </bindings>
</bindings>

您可以在文档中阅读有关绑定的更多信息https://docs.oracle.com/cd/e17802_01/webservices/webservices/docs/1.5/tutorial/doc/jaxbusing4.html

相关问题