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

发布时间 - 2026-01-05 00:00:00    点击率:
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命令 


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


相关推荐: 青岛网站建设如何选择本地服务器?  如何撰写建站申请书?关键要点有哪些?  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  公司网站制作需要多少钱,找人做公司网站需要多少钱?  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  如何正确选择百度移动适配建站域名?  如何在云主机上快速搭建多站点网站?  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  微信小程序 闭包写法详细介绍  Android利用动画实现背景逐渐变暗  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  Android okhttputils现在进度显示实例代码  简单实现Android文件上传  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  韩国服务器如何优化跨境访问实现高效连接?  如何在IIS服务器上快速部署高效网站?  如何快速搭建高效简练网站?  如何在企业微信快速生成手机电脑官网?  长沙做网站要多少钱,长沙国安网络怎么样?  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  Android实现代码画虚线边框背景效果  潮流网站制作头像软件下载,适合母子的网名有哪些?  Laravel怎么使用Intervention Image库处理图片上传和缩放  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  如何快速搭建高效可靠的建站解决方案?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  ,南京靠谱的征婚网站?  黑客如何通过漏洞一步步攻陷网站服务器?  Laravel如何使用withoutEvents方法临时禁用模型事件  教你用AI润色文章,让你的文字表达更专业  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  Laravel中的withCount方法怎么高效统计关联模型数量  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  java获取注册ip实例  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  装修招标网站设计制作流程,装修招标流程?  如何用y主机助手快速搭建网站?  Android中AutoCompleteTextView自动提示  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何在阿里云ECS服务器部署织梦CMS网站?  深圳网站制作的公司有哪些,dido官方网站?