как использовать xmlAdapter в maven-jaxb-plugin - PullRequest
3 голосов
/ 26 августа 2011

Привет, у меня есть схема xsd с base64Binary. когда этот плагин генерируется, этот элемент выглядит как

@XmlElement(name = "element")
    protected byte[] element;

но как я могу сказать этому плагину использовать @XmlJavaTypeAdapter (HexBinaryAdapter.class), поэтому мне нужно что-то вроде этого

@XmlJavaTypeAdapter(HexBinaryAdapter.class)
    @XmlElement(name = "element")
    protected byte[] element;

Я надеюсь, что это возможно, спасибо за помощь

PS: я не могу изменить классы, которые были сгенерированы этим плагином, потому что они всегда переписываются

1 Ответ

3 голосов
/ 26 августа 2011

Вы должны создать файл привязок схемы JAXB, который инструктирует реализацию JAXB использовать встроенную javax.xml.bind.DatatypeConverter для выполнения преобразований в / из hexBinary.

<jxb:bindings 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
    version="2.1">
    <jxb:bindings schemaLocation="YourSchema.xsd">
        <jxb:bindings node="//xs:element[@name='element']">
            <jxb:property>
                <jxb:baseType>
                    <jxb:javaType name="byte[]"
                        parseMethod="javax.xml.bind.DatatypeConverter.parseHexBinary" 
                        printMethod="javax.xml.bind.DatatypeConverter.printHexBinary"/>
                </jxb:baseType>
            </jxb:property>
        </jxb:bindings>
    </jxb:bindings>
</jxb:bindings>

Для получения дополнительной информации

...