如何避免 Jaxb XML 中的所有空标签

Posted

技术标签:

【中文标题】如何避免 Jaxb XML 中的所有空标签【英文标题】:How to avoid all empty tags from Jaxb XML 【发布时间】:2021-11-16 01:38:56 【问题描述】:

嗨,我正在使用 maven 插件从 XSD 创建一个 xml,并使用 JAXB 对其进行编组。 但是如果值不存在,XML 将带有空标签。我怎样才能在全球范围内避免它。下面是我在 XML 中得到的示例空标签。如果它是空的,我不需要任何这些标签。有什么方法可以在 JAXB 级别的 XSD 中实现吗?

<INDIVIDUAL>
    <NAME>
        <FirstName></FirstName>
        <LastName></LastName>
    </NAME>
</INDIVIDUAL>

将其编组为

StringResult result = new StringResult();
JAXBContext jaxbContext     = JAXBContext.newInstance( MESSAGE.class );
Marshaller jaxbMarshaller   = jaxbContext.createMarshaller();
jaxbMarshaller.marshal(messageObj,result);

【问题讨论】:

FirstNameLastName 是 null 还是空字符串? 如果值不存在,我将其设置为 null 您使用的是哪种 JAXB 实现? 用编组更新了问题 不过,我的问题仍然存在。您正在使用哪种 JAXB 实现? 【参考方案1】:

鉴于您似乎正在使用 JAXB (JSR-222) 的参考实现,它不会编组带有 @XmlAttribute 注释且包含空值的属性。话虽如此,请尝试在模型类中使用 @XmlAttribute 注释 FirstNameLastName 属性。

【讨论】:

以上是关于如何避免 Jaxb XML 中的所有空标签的主要内容,如果未能解决你的问题,请参考以下文章

如何删除数组中的所有空数组

如何递归删除PowerShell中的所有空文件夹?

如何一次性删除通用列表中的所有空元素?

如何将默认值 0 赋予 Handsontable 中的所有空单元格?

什么是.episode文件..?

Jaxb编组原始类型