Linux命令行怎么处理XML xmllint命令用法

发布时间 - 2025-12-26 00:00:00    点击率:
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(进入交互模式,支持 catlspwd 等命令)
  • 删除指定节点后输出:xmllint --shell file.xml (配合 shell 管道使用)
  • 验证是否符合 XSD 模式:xmllint --schema schema.xsd data.xml(需 XSD 文件且 XML 声明了 namespace)

不复杂但容易忽略:xmllint 默认不加载外部 DTD 或实体,如需解析   这类实体,加上 --loaddtd 参数;脚本中建议始终用 --nonet 防止意外联网请求。


# linux  # python  # java  # centos  # ubuntu  # 工具  # mac  # macos  # dnf  # 配置文件 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251811 】 【 AI营销90571


相关推荐: Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  浅述节点的创建及常见功能的实现  LinuxCD持续部署教程_自动发布与回滚机制  网站制作企业,网站的banner和导航栏是指什么?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  如何快速重置建站主机并恢复默认配置?  三星网站视频制作教程下载,三星w23网页如何全屏?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  如何用腾讯建站主机快速创建免费网站?  潮流网站制作头像软件下载,适合母子的网名有哪些?  jquery插件bootstrapValidator表单验证详解  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  JS去除重复并统计数量的实现方法  奇安信“盘古石”团队突破 iOS 26.1 提权  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  如何快速搭建高效WAP手机网站吸引移动用户?  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  如何在阿里云服务器自主搭建网站?  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  如何在七牛云存储上搭建网站并设置自定义域名?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  jQuery 常见小例汇总  做企业网站制作流程,企业网站制作基本流程有哪些?  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  佛山网站制作系统,佛山企业变更地址网上办理步骤?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  nodejs redis 发布订阅机制封装实现方法及实例代码  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  JavaScript中的标签模板是什么_它如何扩展字符串功能  音乐网站服务器如何优化API响应速度?  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  Swift中swift中的switch 语句  网站建设要注意的标准 促进网站用户好感度!  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  企业网站制作这些问题要关注  Laravel如何实现用户密码重置功能?(完整流程代码)  如何用花生壳三步快速搭建专属网站?  如何在阿里云虚拟主机上快速搭建个人网站?  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程