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 xmlstarlet 或 sudo 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数据。
以上就是在Linux命令行如何处理xml文件 xmlstarlet工具的常用命令的详细内容,更多请关注php中文网其它相关文章!