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

标签 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:我不能修改由这些插件生成的类,因为它们总是被重写

最佳答案

您应该创建一个 JAXB 模式绑定(bind)文件,指示 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>

了解更多信息

关于java - 如何在 maven-jaxb-plugin 中使用 xmlAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7201811/

相关文章:

java - ComboBoxModel 事件不起作用

java - 是否有停止使用 altbeacon 查找重复信标的功能?

XML 架构唯一子元素

java - 使用 JAXB 从具有多个类的 xml 创建对象?

java - 从文本区域复制的文本在另一个文本编辑器中显示在一行上

java - 在 Java TCP 中接受多个客户端

xml - 如何在 XML 架构中指定唯一值

java - Spring 4、SOAP WS、XSD...产生两种不同的 WSDL

在 JRUBY 中构建 Web 应用程序之前,Tomcat 可能不会从 JAXB 加载 TOMCAT JAR

json - JSON 对象中 @type 的位置导致错误