XML in Java,如何在 XML 中将 @XmlElement 属性 Java Bean Null 显示为空值(已找到解决方案)

XML in Java, how to show an @XmlElement Atribute Java Bean Null as a Empty Valuein XML (Solution Found)

我正在做一个项目。 A 有一个具有某些属性的 Java Bean。我用 Tag @XmlElement 标记每个属性,如下所示:

@XmlElement(name="id", nillable = true)
private String test;

我放了这个 "nillable",它向我显示了标签,即使它为 null 时也是如此,但它在 xml 中向我显示了一条消息,当它为 null

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

但是当它为 null 时,我只想显示带有标签的空值,就像这样

<id></id>

而且我不知道该怎么做。我搜索了,但我没有找到如何,这就是我问的原因。

还有 1 个东西,我可以生成没有属性的 XML 吗?因为我是我的 XML 我必须生成大量空白标签,里面什么都没有,只有标签,如果我不想使用它只是为了显示标签,我不想制作大量属性

谢谢!

我使用的导入和一些配置

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="test")

------------解决方案----------

大家好,我找到了解决办法。 如果有人遇到同样的问题,我想分享。 Ou 将 Class 的 属性 声明为空,类似 String personName = "";

如果您不想更改此值并且只希望标签出现在 XML 中但为空,则无需创建 Getters 和 Setters。

注意:对于这项工作,您必须使用 @XmlAccessorType(XmlAccessType.FIELD) 在你的 class 中。 谢谢大家。 再见

有两种方法可以在 XML 中表示 null 值。

一个选项是所描述的xsi:nil。它只是为您的属性添加一个空标签,并将其注释为持有空值。如果您使用 nillable = true 注释您的属性,则此表单由 JAXB 生成。

请注意,空标签与空字符串标签不同 - 稍后会详细介绍。

另一个选项是根本不代表那个属性。 XML 中的属性将没有标签。如果您不使用 nillable = true 注释 Java 代码,JAXB 默认使用此方法,但属性仍将具有 null 值。

就是这样。

现在,说说你想要实现的目标。呈现 <id></id> 基本上意味着您有一个 id 属性,其中包含一个 空字符串 。尽管当这等同于 null 值(例如 Oracle 的 PL/SQL)时,您可能会找到一种语言,但它显然不等同于 Java 中的 null 值。

此外,如果 id 在您的 Java Bean 中建模为 longint(或任何非字符串类型),解析器将无法将这样的 XML 反序列化回 bean 实例。