java - 带有空字段的 JAXB 编码

标签 java jaxb marshalling

这是一个非常简单的请求,但我只是没有找到方法。

我基本上是在尝试在 JAXB 中设置一个角色,即每当遇到空字段时,而不是在输出中忽略它,而是将其设置为空值。所以对于类(class):

@XMLRootElement
Class Foo {
   Integer num;
   Date date;
….
}

如果日期字段为空,则将其编码到 XML 文件中时,我的输出中没有该元素。我想要做的是在输出中包含所有字段;如果它们为空,请将它们替换为 - 比如说一个空白。所以输出应该是:

<foo>
  <num>123</num>
  <date></date>
</foo>

谢谢,

贾尔佩什。

最佳答案

谢谢大家的回答。

Chris Dail - 我尝试了你的方法,但它并没有真正达到我想要的效果。尽管为我的字段定义了默认值,但 JAXB 仍然忽略了我的 null 值。

在 Jersey 论坛中有人向我指出文档部分 2.2.12.8 No Value 后,我确实偶然发现了答案。 .

基本上,我所要做的就是将以下内容添加到我的字段中:

@XmlElement(nillable = true) 

添加后,JAXB 会在将这些字段编码为 XML 时显示这些字段,如下所示:

...
<num>5</num>
<date xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
....

关于java - 带有空字段的 JAXB 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/858598/

相关文章:

java - @XmlRootElement 和 <T extends Serializable> 抛出 IllegalAnnotationExceptions

JAXB : Is the annotation @XmlAccessorType is only for Serialization and nothing to do with Binding of data?

XML 编码 : mix attributes and elements

c# - 将数组从 C# (Mono) 编码到 C++

java - Joda 日期时间 格式无效

Java:多维数组中的连续区域,用于实现一个拉丁方

java - 没有找到适合响应类型的 HttpMessageConverter

java - 尽管这是一个 kotlin 类,为什么我们要编写 NextActivity::class.java ?

java - 为什么当字长超过 4 时此代码会出现计算器错误?

java - 在不同环境中转换 ElementNSImpl 的问题