xmllint --format 是美化 xml 的最常用方式,支持文件格式化、实时查看、管道处理,并可通过 --dropdtd 和 --noblanks 避免 dtd 验证错误及空白节点干扰,使用前需确保 xml 语法正确且编码为 utf-8。

xmllint --format 是最常用且简单的方式,用来美化(格式化)XML内容,让缩进、换行更清晰,便于阅读和调试。
基本用法:格式化文件并保存
直接对 XML 文件格式化,并输出到新文件:
- xmllint --format input.xml > output.xml
- 如果想原地覆盖(不推荐),可用临时文件中转:
xmllint --format input.xml > temp.xml && mv temp.xml input.xml
实时查看格式化效果(不保存)
适合快速检查或管道处理:
- xmllint --format input.xml —— 直接打印到终端
- 配合 cat 或其他命令:
cat input.xml | xmllint --format -(注意末尾的 - 表示从标准输入读取)
处理有 DTD 或命名空间的 XML
默认情况下,--format 可能因验证失败而报错(比如缺少 DTD 声明)。如只需美化、不验证,加 --noblanks 和 --dropdtd 更稳妥:
- xmllint --format --dropdtd --noblanks input.xml
- --dropdtd 忽略外部 DTD 声明(避免网络请求或找不到文件报错)
- --noblanks 过滤掉无意义的空白文本节点,让缩进更干净
常见问题提醒
如果报错 "Failed to parse",大概率是 XML 本身语法错误(如标签没闭合、属性缺引号等):
- 先用 xmllint --noout input.xml 检查是否合法
- 格式化不会修复语法错误,只会暴露它
- 确保文件编码是 UTF-8,BOM 可能导致解析失败(可用 file input.xml 查看)
基本上就这些。用好 --format 加上几个实用选项,日常 XML 整理足够了。










