如何在Linux命令行下处理XML xmllint工具用法


xmllint 是 libxml2 提供的轻量高效命令行 XML 工具,支持格式化、DTD/XSD 校验、XPath 提取及结合 shell 实现简单编辑,无需 Python/Java 环境,多数 Linux 预装或易安装。

xmllint 是 libxml2 提供的命令行 XML 处理工具,轻量、高效,适合脚本中解析、校验、格式化或提取 XML 内容。它不依赖 Python 或 Java 环境,开箱即用(多数 Linux 发行版预装或可通过 apt install libxml2-utils / yum install libxml2 安装)。

格式化(美化)XML 输出

让压缩或混乱的 XML 变得可读:

  • 基本格式化:xmllint --format input.xml
  • 保存到新文件:xmllint --format input.xml > pretty.xml
  • 原地格式化(需 GNU sed 配合,xmllint 本身不支持 -i):xmllint --format input.xml > tmp && mv tmp input.xml

验证 XML 是否符合 DTD 或 XSD

检查语法和结构合法性:

  • 用内置 DTD 验证(如 XHTML):xmllint --valid --noout file.xhtml
  • 用外部 XSD 验证:xmllint --schema schema.xsd data.xml --noout
  • --noout 表示只输出错误,不打印文档内容;省略则会先输出校验后的 XML

提取节点内容(XPath 查询)

--xpath 提取文本或节点,类似“XML 的 grep”:

  • 提取所有 title 文本:xmllint --xpath '//title/text()' book.xml
  • 提取带属性的节点:xmllint --xpath '//*[@id="main"]/name/text()' config.xml
  • 提取整个节点(含标签):xmllint --xpath '//config' config.xml(去掉 /text()
  • 注意:XPath 必须写完整,// 表示任意层级,. 表示当前节点,@attr 获取属性值

编辑与转换(配合 shell 工具)

xmllint 本身不修改文件,但可组合实现简单编辑:

  • 替换某个值(如把 version=1.0 改成 2.0):xmllint --shell input.xml (较繁琐,建议搭配 xmlstarsed 正则处理简单场景)
  • 删除节点:xmllint --xpath '/*[not(self::obsolete)]' input.xml(用 XPath 排除方式间接“删除”)
  • 生成新 XML 片段:echo 'new' | xmllint --format -(- 表示从 stdin 读)

实际使用中,优先用 --xpath 提取、--format 整理、--schema 校验。复杂修改建议转用 xmlstar 或编程语言,xmllint 更擅长“查”和“验”,而非“改”。


# linux  # python  # java  # html  # 工具  # ai  # linux命令 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: 如何使用Golang实现负载均衡_分发请求到多个服务节点  如何使用Golang包导出规则_控制函数和变量可见性  Win10如何优化内存使用_Win10内存优化技巧【攻略】  如何在Golang中处理URL参数_Golang URL参数解析与路由映射方法  Win11怎么更改电脑密码_Windows 11修改本地账户密码【步骤】  Go 中的 := 运算符:类型推导机制与使用边界详解  c++ try_emplace用法_c++ map高效插入数据  Win11怎样安装网易云音乐_Win11安装网易云教程【步骤】  Win11无法安装软件怎么办_Win11解除应用安装限制设置【修复】  Windows10如何更改鼠标图标_Win10鼠标属性指针浏览  Mac如何设置动态壁纸?(让桌面动起来)  如何使用正则表达式批量替换重复的 *- 模式为固定字符串  Go语言中CookieJar的持久化机制解析:内存存储与自定义持久化方案  Linux怎么设置磁盘配额_Linux系统Quota安装与用户空间限制【教程】  Python变量绑定机制_引用模型解析【教程】  Win10怎么创建桌面快捷方式 Win10为应用创建快捷方式【步骤】  Win11截图快捷键是什么_Win11自带截图工具使用技巧【汇总】  网站体验不好=浪费钱:如何提升-用户体验效果差  Windows如何拦截2345弹窗广告_Windows拦截2345弹窗方法【步骤】  如何使用Golang encoding/json解析JSON_Golang encoding/json解析与序列化示例  Windows笔记本无法进入睡眠模式怎么办?(电源疑难解答)  Win11系统更新后黑屏怎么办 Win11更新黑屏修复教程【方法】  php本地部署支持nodejs吗_php与nodejs混合开发环境搭建教程【教程】  Bpmn 2.0的XML文件怎么画流程图  如何使用Golang实现跨域请求支持_Golang CORS配置与处理方法  Win11怎么查看已连接wifi密码 Win11查已连wifi密码步骤【教程】  Win11怎么更改账户头像_Windows 11自定义用户头像图片设置【步骤】  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  Windows10怎样设置家长控制_Windows10家长控制设置方法【指南】  PHP主流架构如何做单元测试_工具与流程【详解】  XML的“混合内容”是什么 怎么用DTD或XSD定义  Win11怎么关闭SmartScreen_禁用Windows Defender筛选器教程【步骤】  PHP中require语句后直接调用返回对象方法的语法解析  Python大文件处理策略_内存优化说明【指导】  如何用::实现工具类方法调用_php静态工具类设计技巧【技巧】  Win10怎样设置多显示器_Win10多显示器扩展设置【攻略】  电脑的“网络和共享中心”去哪了_Windows 11新版网络设置指南【新手】  Win11怎么开启HDR模式_Windows 11高动态范围显示设置指南【详解】  Laravel 查询 JSON 列:高效筛选包含数组中任意值的记录  Win11怎么关闭自动维护 Win11禁用系统自动维护功能【优化】  Python如何创建带属性的XML节点  php打包exe如何加密代码_防反编译保护方法【技巧】  Windows蓝屏BAD_POOL_HEADER故障详解_蓝屏池损坏错误修复指南  Drupal 中 HTML 链接被双重转义导致渲染异常的解决方案  php嵌入式多设备通信怎么实现_php同时管理多个串口设备【操作】  c# 服务器GC和工作站GC的区别和设置  Windows 10怎么把任务栏放在屏幕上方_Windows 10解锁任务栏并拖动位置  如何使用Golang写入二进制文件_Golang io Write二进制写入示例  如何使用Golang实现微服务事件驱动_使用消息总线解耦服务  Win11怎么关闭小组件_Win11禁用任务栏天气与小组件方法【设置】 

 2026-01-05

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.