如何在maven-jaxb-plugin中使用xmlAdapter

时间:2011-08-26 08:15:54

标签: java xsd jaxb unmarshalling

您好我有base64Binary的xsd架构。当这个插件生成这个元素看起来像

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

但是如何告诉这个插件使用@XmlJavaTypeAdapter(HexBinaryAdapter.class)所以我需要这样的东西

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

我希望这是可能的帮助

PS:我无法修改由这些插件生成的类,因为它们总是被重写

1 个答案:

答案 0 :(得分:3)

您应该创建一个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>

了解更多信息