编程语言
首页 > 编程语言> > java-如何在m​​aven-jaxb-plugin中使用xmlAdapter

java-如何在m​​aven-jaxb-plugin中使用xmlAdapter

作者:互联网

嗨,我有xsd模式与base64Binary.当这个插件产生时,这个元素看起来像

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

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

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

我希望这可能会有所帮助

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

解决方法:

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

欲获得更多信息

> http://blog.bdoughan.com/2011/08/xml-schema-to-java-generating.html

标签:unmarshalling,jaxb,xsd,java
来源: https://codeday.me/bug/20191208/2088200.html