【问题标题】:XML in Java, how to show an @XmlElement Atribute Java Bean Null as a Empty Valuein XML (Solution Found)Java 中的 XML,如何在 XML 中将 @XmlElement 属性 Java Bean Null 显示为空值(找到解决方案)
【发布时间】:2016-06-21 20:04:49
【问题描述】:

我在一个项目中工作。 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")

---------解决办法----------

嗨,伙计们,我找到了解决方案。 如果有人陷入同样的​​问题,我想分享。 我们将 Class 的属性声明为空,例如 字符串人名 = "";

如果您不更改此值并且只希望标记在 XML 中但为空,则不需要创建 Getter 和 Setter。

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

【问题讨论】:

  • 您是否尝试在“@XmlElement”注释中添加“required = true”?

标签: java xml xml-literals


【解决方案1】:

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

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

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

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

就是这样。

现在,到您想要实现的目标。渲染&lt;id&gt;&lt;/id&gt; 基本上意味着您有一个id 属性,其中包含一个空字符串。虽然当它与null 值(例如Oracle 的PL/SQL)等价时,您可能会找到一种语言,但它显然不等同于Java 中的null 值。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 2017-05-02
    • 2011-03-18
    相关资源
    最近更新 更多