Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jaxb为特定字段定制nillable属性值_Java_Xml_Xsd_Jaxb - Fatal编程技术网

Java Jaxb为特定字段定制nillable属性值

Java Jaxb为特定字段定制nillable属性值,java,xml,xsd,jaxb,Java,Xml,Xsd,Jaxb,我正在使用一个XSD模式文件(我无法更改),该文件将元素XXX定义为: 这将在生成的类中生成java.util.Date 我需要更改字段封送为XML的方式:如果属性为null,我希望生成一个空标记,就像xsd是: 这将在生成的类中生成一个JaxbElement 可以通过Jaxb绑定执行类似的操作吗 问候 朱利奥是的,你可以。。但这不是一个好的做法 <bindings node="//xs:element[@name='XXX']"> <property name="

我正在使用一个XSD模式文件(我无法更改),该文件将元素XXX定义为:


这将在生成的类中生成java.util.Date

我需要更改字段封送为XML的方式:如果属性为null,我希望生成一个空标记,就像xsd是:


这将在生成的类中生成一个JaxbElement

可以通过Jaxb绑定执行类似的操作吗

问候

朱利奥是的,你可以。。但这不是一个好的做法

<bindings node="//xs:element[@name='XXX']">
    <property name="xxx">
        <baseType> 
            <javaType name= "javax.xml.bind.JAXBElement&lt;java.util.Date&gt;"/>
        </baseType>
    </property>
</bindings>

您还应该在

  • parseMethod是在过程中调用的解析方法的名称 解编
  • printMethod是要打印的打印方法的名称 在编组时呼叫
建议:

  • 使用XSLT预处理您的模式,在需要的地方添加
    nillable
  • 使用
    jaxb2 simplify插件
    并使用
    simplify:as-reference属性
    自定义元素。事实上,我从未尝试过,但也许它会起作用
  • 编写一个XJC插件

另外,我是上述内容的作者。

我使用maven XML插件应用了XSLT转换,它成功了:)我没有尝试使用您的插件,因为第一个选项立即起作用。我尝试使用您的解决方案,但对我来说,它太复杂了,无法工作(我还需要添加一些java代码使其工作)。无论如何,谢谢你;)