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 中建模为 long
或 int
(或任何非字符串类型),解析器将无法将这样的 XML 反序列化回 bean 实例。
我正在做一个项目。 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 中建模为 long
或 int
(或任何非字符串类型),解析器将无法将这样的 XML 反序列化回 bean 实例。