JAXB:空字符串不会生成空元素
我正在使用Sun JDK1.6.0_18中的JAXB2.1.10: D:\apps\jdk160_18\bin>xjc.exe-版本 xjc版本“JDK 6中的JAXB 2.1.10” JavaTM XML绑定体系结构(JAXB)参考实现(在JDK 6中构建JAXB 2.1.10) 当JAXB对象具有空字符串(JAXB:空字符串不会生成空元素,jaxb,Jaxb,我正在使用Sun JDK1.6.0_18中的JAXB2.1.10: D:\apps\jdk160_18\bin>xjc.exe-版本 xjc版本“JDK 6中的JAXB 2.1.10” JavaTM XML绑定体系结构(JAXB)参考实现(在JDK 6中构建JAXB 2.1.10) 当JAXB对象具有空字符串(“)的值时,我需要让JAXB的封送器生成一个空元素(例如或)。但是,JAXB并没有这样做,而是从输出中完全忽略了元素(好像它是可选元素) 我在Internet上的搜索表明JAXB通常应该创
“
)的值时,我需要让JAXB的封送器生成一个空元素(例如
或
)。但是,JAXB并没有这样做,而是从输出中完全忽略了元素(好像它是可选元素)
我在Internet上的搜索表明JAXB通常应该创建此标记,只要您将字段设置为非空空字符串(即myJAXBObject.setSomeStringField(“”;):
在我的XSD中,我试图指出(以我所知道的每一种方式)元素的存在是强制性的,即使它是空的:
<xs:element name="outerElement">
<xs:complexType>
<xs:sequence>
<xs:element name="someStringField" type="xs:string" nillable="false" minOccurs="1" />
<xs:element name="someOtherStringField" type="xs:string" />
但是,当我封送以下对象时
outerElement.setSomeStringField("");
outerElement.setSomeOtherStringField("Value was set");
我得到:
<outerElement>
<someOtherStringField>Value was set</someOtherStringField>
</outerElement>
值已设置
当我期待的时候:
<outerElement>
<someStringField></someStringField>
<someOtherStringField>Value was set</someOtherStringField>
</outerElement>
值已设置
或:
值已设置
有人能看出我做错了什么吗?抱歉。我认为我使用的是来自Sun的JDK的JAXB,但我没有。在我的类/文件夹中有一个剩余的jaxb.properties,它是在我生成绑定时由JDeveloper创建的。我实际上是在使用EclipseLink/MOXy中的JAXB2.0
删除属性文件可以使用JAXB2.1并修复我的问题。感谢您提醒我们注意这个问题()。该bug已经修复,将包含在EclipseLink 2.1.1维护版本中。如果您希望更早地访问此修复程序,您可以从7月8日开始从以下位置获取夜间下载:
<outerElement>
<someStringField></someStringField>
<someOtherStringField>Value was set</someOtherStringField>
</outerElement>
<outerElement>
<someStringField/>
<someOtherStringField>Value was set</someOtherStringField>
</outerElement>