Java JAXB在编组时忽略字符串
好吧,这有点让我发疯。我有这门课: 我正在尝试将它从/整理成一个XML文件。但是,无论我向类HazardousItem添加多少字符串变量,或者使用什么修饰符(xmlacesstype.FIELD,None,…),它都不会写入XML文件。甚至当我读回这个文件时,解组器也不会抱怨缺少属性 奇怪的是,我有另一个字符串属性,在文件的下面,它工作得很好:Java JAXB在编组时忽略字符串,java,xml,jaxb,Java,Xml,Jaxb,好吧,这有点让我发疯。我有这门课: 我正在尝试将它从/整理成一个XML文件。但是,无论我向类HazardousItem添加多少字符串变量,或者使用什么修饰符(xmlacesstype.FIELD,None,…),它都不会写入XML文件。甚至当我读回这个文件时,解组器也不会抱怨缺少属性 奇怪的是,我有另一个字符串属性,在文件的下面,它工作得很好: @XmlAttribute protected String damageSource; 我甚至尝试将字符串作为Xml
@XmlAttribute
protected String damageSource;
我甚至尝试将字符串作为XmlAttribute和XmlElement添加到根元素,但没有成功。如果我将数据类型更改为int,它就会工作。在某些情况下,“字符串”似乎被忽略了。
我正在使用JRE7 1.7.0_75附带的JAXB,如果这很重要的话
仅供参考,这是我的测试输出文件的一部分:
<hazardousItems>
<hazardousItem exactMatch="false">
<damageEffect damageSource="inFire" amount="0.5"/>
存在exactMatch,但不存在unlocName。就在下一个元素damageEffect中,字符串被导出(damageSource)
这是为什么?默认情况下不导出空值,因此不将具有空值的字符串属性写入xml。在不导出字符串的情况下,字符串是否可能为空?因为int是基元类型,因此从不为null(默认为0)。。是的,这就是解决办法。在我的FactoryClass中,由于大量复制和粘贴,我返回了HazardousItem的一个新实例,而不是填充的实例。谢谢你的提示!不客气。这也经常发生在我身上,这就是为什么这是我的第一个猜测我将在下面添加“官方”答案,以便其他人在遇到类似问题时更容易看到。