0

我在一个项目中工作。A 有一个带有一些属性的 Java Bean。我用标签@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"/>

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

<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 的属性声明为空,例如 String personName = "";

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

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

4

1 回答 1

1

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

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

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

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

就是这样。

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

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

于 2016-06-21T20:31:20.530 回答