信息发布→ 登录 注册 退出

在Linux命令行如何处理xml文件 xmlstarlet工具的常用命令

发布时间:2025-11-16

点击量:
xmlstarlet是Linux下处理XML的命令行工具,支持查询、编辑、格式化和验证。使用sel查询节点内容,fo格式化XML,ed修改增删节点,val验证合法性,配合-N处理命名空间,适用于Shell脚本高效操作XML数据。

Linux下处理XML文件,xmlstarlet 是一个强大且常用的命令行工具。它能查询、编辑、验证和格式化XML文档,无需编写脚本即可完成大多数操作。以下是xmlstarlet的常用命令和使用方法。

安装 xmlstarlet

在主流Linux发行版中可通过包管理器安装:
  • Ubuntu/Debian: sudo apt install xmlstarlet
  • CentOS/RHEL: sudo yum install xmlstarletsudo dnf install xmlstarlet
  • Fedora: sudo dnf install xmlstarlet

查看XML内容(查询节点)

使用 sel(select)子命令提取指定节点内容。
  • xmlstarlet sel -t -v "//title" file.xml:获取所有 title 节点的文本值
  • xmlstarlet sel -t -m "//book" -v "title" -n file.xml:遍历每个 book 节点,输出其 title 并换行
  • xmlstarlet sel -t -v "/root/item/@id" file.xml:获取属性值(@ 表示属性)

格式化和美化XML

如果XML是压缩成一行的,可用 fo(format)子命令美化排版。
  • xmlstarlet fo file.xml:标准格式化输出
  • xmlstarlet fo -s 2 file.xml:设置缩进为2个空格
  • xmlstarlet fo --indent-tab file.xml:使用Tab缩进

修改XML内容(增删改)

使用 ed(edit)子命令修改文件。
  • xmlstarlet ed -u "//title" -v "新标题" file.xml:更新所有 title 节点的值
  • xmlstarlet ed -u "//book[@id='101']/price" -v "29.99" file.xml:根据条件更新特定节点
  • xmlstarlet ed -d "//book[@category='old']" file.xml:删除符合条件的节点
  • xmlstarlet ed -s "/root" -t elem -n "newitem" -v "value" file.xml:在 root 下添加新元素
  • xmlstarlet ed -s "//book" -t attr -n "updated" -v "true" file.xml:添加新属性

验证XML是否合法

使用 val(validate)检查XML语法。
  • xmlstarlet val file.xml:验证文件是否为良好格式(well-formed)
  • xmlstarlet val -e file.xml:启用严格错误提示

命名空间处理

当XML包含命名空间时,需先定义前缀。
  • xmlstarlet sel -N x="http://example.com/ns" -t -v "//x:title" file.xml:通过 -N 指定命名空间映射
基本上就这些常见用法。熟练掌握后,可在Shell脚本中高效处理配置文件、API响应等XML数据。
标签:# format  # 符合条件  # 它能  # 可通过  # 管理器  # 可在  # 适用于  # 遍历  # 是一个  # 命令行  # debian  # http  # xml  # xml处理  # select  # 命名空间  # 格式化输出  # linux命令  # 配置文件  # dnf  # 工具  # ubuntu  # go  # centos  # linux  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!