Я использую файл внешних привязок при использовании jaxb против схемы XML.
В основном я использую файл привязок для сопоставления примитивов схемы XML с моими собственными типами.
Это фрагмент файла привязок
<jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ai="http://java.sun.com/xml/ns/jaxb/xjc" extensionBindingPrefixes="ai">
<jxb:bindings schemaLocation="xsdurl" node="xs:schema">
<jxb:globalBindings>
<jxb:javaType name="com.companyname.StringType" xmlType="xs:string"
parseMethod="parse" printMethod="print" hasNsContext="true">
</jxb:javaType>
</jxb:globalBindings>
</jxb:bindings>
</jxb:bindings>
Таким образом, всякий раз, когда встречается xs:string
, com.companyname.StringType
методы print
/ parse
вызываются для маршалинга / демаршаллинга и т. Д.
Теперь, если JAXB встретит xs:enumeration
, он сгенерирует Java enum
.
Например:
<xs:simpleType name="Address">
<xs:restriction base="xs:string">
<xs:enumeration value="ADDR"/>
<xs:enumeration value="PBOX"/>
</xs:restriction>
</xs:simpleType>
public enum Address
{
ADDR,
PBOX,
public String value() {
return name();
}
public static Address fromValue(String v) {
return valueOf(v);
}
}
Кто-нибудь знает, можно ли настроить создание enum
как для примитива? Я хотел бы иметь возможность:
Добавить стандартную переменную-член / другие методы к каждому перечислению, сгенерированному jaxb.
Укажите статический метод, используемый для создания enum
.