我使用JAXB 2.1.10從Sun的JDK 1.6.0_18:JAXB:空字符串不會產生空元素
d:\ APPS \ jdk160_18 \ BIN> xjc.exe -version XJC版「JAXB 2.1.10在JDK 6" 的JavaTM架構XML綁定(JAXB)參考實現,
我需要JAXB的編組產生一個空的元素(JDK 6建造JAXB 2.1.10)(例如<someStringField></someStringField>
或<someStringField/>
)時JAXB對象具有空字符串的值(""
)。但是,JAXB不是這樣做的,而是從輸出中完全忽略該元素(就好像它是一個可選元素一樣)。
我在網上搜索表明,JAXB通常應該創建這個標籤,只要你設置字段的非空空字符串(即myJAXBObject.setSomeStringField(「」);):
How to instantiate an empty element with JAXB https://jaxb.dev.java.net/tutorial/section_2_2_12_8-No-Value.html#No%20Value
在我的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" />
生成的代碼廁所KS這樣的(這是相同的兩個元素):
@XmlElement(name = "someStringField", required = true)
protected String someStringField;
@XmlElement(name = "someOtherStringField", required = true)
protected String someOtherStringField;
然而,當我當元帥的下列對象...
outerElement.setSomeStringField("");
outerElement.setSomeOtherStringField("Value was set");
我得到:
<outerElement>
<someOtherStringField>Value was set</someOtherStringField>
</outerElement>
當我期待:
<outerElement>
<someStringField></someStringField>
<someOtherStringField>Value was set</someOtherStringField>
</outerElement>
或者:
<outerElement>
<someStringField/>
<someOtherStringField>Value was set</someOtherStringField>
</outerElement>
任何人都可以發現我做錯了什麼嗎?
現在這個問題(https://bugs.eclipse.org/319028)一直在EclipseLink MOXy中修復。 – 2010-07-08 15:31:46