我在一个项目中工作。 A 有一个具有某些属性的 Java Bean。我使用标签 @XmlElement 标记每个属性,如下所示:
@XmlElement(name="id", nillable = true)
private String test;
我把这个“nillable”,它显示了标签,即使是 null true 但它在 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
建模为long
或int
(或任何非 String 类型)在 Java Bean 中,解析器将无法将此类 XML 反序列化回 bean 实例。
关于java - Java 中的 XML,如何在 XML 中将 @XmlElement 属性 Java Bean Null 显示为空值(已找到解决方案),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37953620/