如何在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 inp
ut.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 (较繁琐,建议搭配xmlstar或sed正则处理简单场景) - 删除节点:
xmllint --xpath '/*[not(self::obsolete)]' input.xml(用 XPath 排除方式间接“删除”) - 生成新 XML 片段:
echo '(- 表示从 stdin 读) ' | xmllint --format -- new
实际使用中,优先用 --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官方网站?


ut.xml > pretty.xml