2015-05-18 50 views
0

好吧,这有点让我很疯狂。我有这个类:http://pastebin.com/agdnDhQw 而我试图(un-)从/到一个XML文件编组它。然而,它确实工作正常,无论我添加到类HazardousItem或我使用哪些修饰符(XmlAccessType.FIELD,无,..)中的字符串变量的数量都不会写入XML文件。即使当我读取这个文件时,解组器也不会抱怨缺少的属性。JAXB忽略编组上的字符串

奇怪的是,我还有一个字符串属性,进一步下跌的文件,它工作得很好:

 @XmlAttribute 
     protected String damageSource; 

我甚至尝试添加一个字符串作为XmlAttribute和的XmlElement到根元素,但没有成功。如果我将数据类型更改为int,它将起作用。在某些情况下,“String”似乎被忽略。 如果这很重要,我使用的是JRE7 1.7.0_75附带的JAXB。

仅供参考,这是我的测试输出文件的一部分:

<hazardousItems> 
<hazardousItem exactMatch="false"> 
    <damageEffect damageSource="inFire" amount="0.5"/> 

exactMatch是存在的,但不是unlocName。只是在下一个元素中,损坏效果,字符串被导出(damageSource)

这是为什么?

+1

您的字符串在未导出时可能为空吗?因为int是原始类型,因此不会为null(默认情况下为0)。 –

+0

我现在感觉SOO倾倒..是的,那是解决方案。在我的FactoryClass中,由于大量复制和粘贴,我返回了_HazardousItem_的一个新实例,而不是已填充的实例。感谢提示! – Namikon

+0

不客气。它也经常发生在我身上,这就是为什么这是我的第一次猜测。 :)我会在下面添加“官方”答案,以便其他人在遇到类似问题时可以更轻松地看到它。 –

回答

0

默认情况下不会导出空值,因此具有空值的字符串属性不会写入xml。