怎么用命令行工具格式化XML xmllint –format

4次阅读

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

怎么用命令行工具格式化XML xmllint –format

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 整理足够了。

text=ZqhQzanResources