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

标签 java xml xml-literals

我在一个项目中工作。 A 有一个具有某些属性的 Java Bean。我使用标签 @XmlElement 标记每个属性,如下所示:

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

我把这个“nillable”,它显示了标签,即使是 null tr​​ue 但它在 xml 中显示一条消息,当为 null

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

但是当它为空时,我想仅显示带有标签的空值,如下所示

<id></id>

我不知道该怎么做。我搜索过,但没有找到方法,这就是我问的原因。

还有一件事,我可以生成没有属性的 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")

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

嗨,伙计们,我找到了解决方案。 如果有人遇到同样的问题,我想分享。 您将类的属性声明为空,类似于 字符串 personName = "";

如果您不更改此值并且只想将标记应用在 XML 中但为空,则无需创建 Getters 和 Setters。

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

最佳答案

有两种方法来表示 null XML 中的值。

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

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

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

就是这样。

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

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

关于java - Java 中的 XML,如何在 XML 中将 @XmlElement 属性 Java Bean Null 显示为空值(已找到解决方案),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37953620/

相关文章:

java - 如何解析 Retrofit 2 响应以显示数据?

java - 为什么我必须重新定义数据结构两次?我是不是该?

javascript - FreesWitch语音识别speechtools.jm错误

java - Android NavigationView 抽屉没有关闭

java - jackson 中用于枚举的自定义xml解串器

vb.net - 为什么动态 XML 文字不继承默认命名空间

java - 如何使 Java ResultSet 在我的 jsp 中可用?

vb.net - 带有 Linq 语句的 XML 文字

java - Railo 4.2.1.008 Error (missinginclude) 出了什么问题?