如何使用Java Transformer在XML文件中去除空白节点并消除缩进与换行?

2026-04-29 13:241阅读0评论SEO教程
  • 内容介绍
  • 相关推荐

本文共计867个文字,预计阅读时间需要4分钟。

如何使用Java Transformer在XML文件中去除空白节点并消除缩进与换行?

由于Transformer默认不压缩格式,会将源XML中的文本节点(包括换行、缩进、空白格)原样保留为:

  • 常见错误现象:Node.getNodeType() == Node.TEXT_NODE 却发现内容是 " ",导致遍历时误判子节点数量或内容为空
  • 使用场景:生成配置文件、序列化 DTO、对接要求严格 XML 结构的第三方系统(如某些 SOAP 接口)
  • 关键点:问题分两层——DOM 构建阶段是否忽略空白、输出阶段是否抑制缩进。只改输出不解决 DOM 内部的冗余 #text 节点

如何在 DOM 解析阶段就丢弃空白文本节点

最彻底的办法是在用 DocumentBuilder 加载 XML 时启用 setIgnoringElementContentWhitespace(true),但注意它只对 DTD/XSD 声明了元素内容模型(如 element)的文档生效,纯 XML 没声明时无效。

阅读全文

本文共计867个文字,预计阅读时间需要4分钟。

如何使用Java Transformer在XML文件中去除空白节点并消除缩进与换行?

由于Transformer默认不压缩格式,会将源XML中的文本节点(包括换行、缩进、空白格)原样保留为:

  • 常见错误现象:Node.getNodeType() == Node.TEXT_NODE 却发现内容是 " ",导致遍历时误判子节点数量或内容为空
  • 使用场景:生成配置文件、序列化 DTO、对接要求严格 XML 结构的第三方系统(如某些 SOAP 接口)
  • 关键点:问题分两层——DOM 构建阶段是否忽略空白、输出阶段是否抑制缩进。只改输出不解决 DOM 内部的冗余 #text 节点

如何在 DOM 解析阶段就丢弃空白文本节点

最彻底的办法是在用 DocumentBuilder 加载 XML 时启用 setIgnoringElementContentWhitespace(true),但注意它只对 DTD/XSD 声明了元素内容模型(如 element)的文档生效,纯 XML 没声明时无效。

阅读全文