[英]Rename Enum in xsd with JAXB
我想知道是否可能,如果可以,如何在 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>
我已经删除了大多数不相关的信息,只保留了原始结构。
如您所见,我有一个生成为 RE_LEVANT 的枚举,我想在生成 Java 代码时删除下划线。
所以结果应该是相关的。
这会成功的
<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/JAXBUsing267526FDC708D中阅读有关绑定的更多信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.