JDOM2 如何禁止无内容的XML元素输出为自闭合标签?
解决方案
可以通过JDOM2内置的输出格式配置直接实现,无需修改业务层的元素填充逻辑。
JDOM2默认会将无任何子节点、文本内容的空元素输出为自闭合标签,可通过Format类的专属配置项切换该行为。
代码修改位置
找到原有代码中初始化输出格式的逻辑:
XMLOutputter outter=new XMLOutputter(); outter.setFormat(Format.getPrettyFormat());
调整为以下内容即可:
XMLOutputter outter = new XMLOutputter(); Format outputFormat = Format.getPrettyFormat(); // 开启空元素展开配置,禁止自闭合输出 outputFormat.setExpandEmptyElements(true); outter.setFormat(outputFormat);
效果说明
- 该配置全局生效,所有没有内容的空元素都会输出为成对的开闭标签,完全匹配后续手动填充内容的格式需求。
- 如果仅需要特定元素展开、不希望全局生效,也可以单独给目标元素添加空文本节点,例如对
changeSetElement执行changeSetElement.addContent("");,但这种方式会引入冗余的空白节点,优先推荐使用格式配置的方案。
内容的提问来源于stack exchange,提问作者Fabio
相关产品推荐
相关产品推荐

