xmllint 是 libxml2 提供的轻量高效命令行 XML 工具,支持格式校验、XPath 提取、美化输出及交互式操作,无需 Python/Java 环境,Linux/macOS 均可通过包管理器安装。

xmllint 是 libxml2 提供的命令行 XML 处理工具,轻量、高效,适合在 Shell 脚本中做格式校验、内容提取、结构查询等操作。它不依赖 Python 或 Java 环境,系统自带或 apt/yum 安装即可使用。
安装 xmllint
多数 Linux 发行版默认未预装,需手动安装:
- Ubuntu/Debian:sudo apt install libxml2-utils
- CentOS/RHEL/Fedora:sudo yum install libxml2 -y(RHEL8+ 用 dnf install libxml2)
- macOS(Homebrew):brew install libxml2(注意:可能需加 --with-python 或确认 bin 路径)
验证 XML 格式是否合法
这是最常用场景,用于 CI/CD 中检查配置文件是否语法正确:
- 基础校验:xmllint --noout config.xml(无输出表示合法;报错则说明有语法问题)
- 带错误位置提示:xmllint --noout --valid config.xml(强制 DTD 验证,若含 DOCTYPE 才生效)
- 忽略命名空间警告(常见于 RSS/Atom):xmllint --noout --nsclean feed.xml
提取 XML 中的文本内容
用 XPath 表达式精准定位节点值,比正则更可靠:
- 提取所有
文本:xmllint --xpath '//title/text()' book.xml - 提取带属性的节点(如 id=123 的 item):xmllint --xpath '//item[@id="123"]/name/text()' data.xml
- 提取多个字段并换行分隔:xmllint --xpath 'concat(//author/text(), " ", //year/text())' book.xml
注意:XPath 中的引号要匹配,单引号内用双引号包属性值,反之亦然;text() 是获取纯文本的关键,漏掉会返回带标签的字符串。
格式化(美化)XML 输出
把压缩或混乱的 XML 变成可读缩进格式,便于人工查看或 diff:
- 标准美化:xmllint --format raw.xml
- 美化并保存到新文件:xmllint --format raw.xml > pretty.xml
- 只美化不校验(跳过解析错误):xmllint --format --recover broken.xml(--recover 尝试修复小错误)
其他实用技巧
- 查看 XML 结构概览:xmllint --shell file.xml(进入交互模式,支持 cat、ls、pwd 等命令)
- 删除指定节点后输出:xmllint --shell file.xml (配合 shell 管道使用)
- 验证是否符合 XSD 模式:xmllint --schema schema.xsd data.xml(需 XSD 文件且 XML 声明了 namespace)
不复杂但容易忽略:xmllint 默认不加载外部 DTD 或实体,如需解析 这类实体,加上 --loaddtd 参数;脚本中建议始终用 --nonet 防止意外联网请求。










