Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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在编组时忽略字符串_Java_Xml_Jaxb - Fatal编程技术网

Java JAXB在编组时忽略字符串

Java JAXB在编组时忽略字符串,java,xml,jaxb,Java,Xml,Jaxb,好吧,这有点让我发疯。我有这门课: 我正在尝试将它从/整理成一个XML文件。但是,无论我向类HazardousItem添加多少字符串变量,或者使用什么修饰符(xmlacesstype.FIELD,None,…),它都不会写入XML文件。甚至当我读回这个文件时,解组器也不会抱怨缺少属性 奇怪的是,我有另一个字符串属性,在文件的下面,它工作得很好: @XmlAttribute protected String damageSource; 我甚至尝试将字符串作为Xml

好吧,这有点让我发疯。我有这门课: 我正在尝试将它从/整理成一个XML文件。但是,无论我向类HazardousItem添加多少字符串变量,或者使用什么修饰符(xmlacesstype.FIELD,None,…),它都不会写入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的一个新实例,而不是填充的实例。谢谢你的提示!不客气。这也经常发生在我身上,这就是为什么这是我的第一个猜测我将在下面添加“官方”答案,以便其他人在遇到类似问题时更容易看到。