如何避免XmlSlurper将含空格的空节点转换为自闭合节点?
解决XmlSlurper序列化时丢失空白节点内容的问题
XmlSlurper默认会忽略仅包含空白的文本节点,这就是你原本的<node> </node>被转换成<node/>的原因。要保留原始格式,只需修改解析器配置,让它保留空白内容:
修改后的代码
// 配置XmlSlurper保留空白文本节点 XmlSlurper slurper = new XmlSlurper(false, false); slurper.setPreserveWhitespace(true); def xml = slurper.parseText(testxml); def node = XmlUtil.serialize(xml.MessageRequest.LineSize[1]); msg.put("node", node);
关键说明
- 创建
XmlSlurper时传入两个false,分别禁用命名空间支持和验证(无需时可这么设置),再调用setPreserveWhitespace(true)开启空白保留。 - 调整后解析出的XML树会保留原节点中的空白内容,序列化时就能输出
<node> </node>而非自闭合标签。
内容的提问来源于stack exchange,提问作者keku keku
相关产品推荐
相关产品推荐

