目录
一、概述
二、功能特点
1、查询和过滤
2、修改和更新
3、批处理操作
4、跨平台支持
5、转换和格式化
6、验证和校验
三、 安装 xmlstarlet
四、 基本用法
1、xmlstarlet 的基本语法
2、获取帮助
五、 常用命令
1. ed(编辑) - 用于编辑 XML 文档
2. sel(选择) - 用于查询 XML 文档
3. fo(格式化) - 用于格式化 XML 文件,使其更易于阅读
4. tr(转换) - 用于将 XML 转换为其他格式
5. val(验证) - 用于验证 XML 文档是否符合指定的 DTD 或 XML Schema
6. elt(创建元素) - 用于创建新的 XML 元素
六、 使用 XPath 表达式
七、完整的例子
八、总结
一、概述
xmlstarlet 是一个强大的命令行工具,用于处理 XML 文档。它可以用来执行各种操作,如格式化、查询、修改、验证和转换 XML 数据。xmlstarlet
支持 XPath 和 XQuery 表达式,这使得在命令行中处理 XML 文档变得非常方便。
二、功能特点
1、查询和过滤
(XmlStarlet支持使用XPath表达式对XML文档进行查询和过滤,以获取所需的数据。XPath是一种在XML文档中查找信息的语言,它可以根据节点的路径、属性和内容进行选择。例如,查询某个节点值或节点属性值,可以使用xmlstarlet sel命令结合XPath表达式。
2、修改和更新
(1)XmlStarlet可以修改XML文档中的元素和属性,包括更新现有的元素值、添加新的元素和属性、删除不需要的元素和属性,以及重命名元素和属性。
(2)修改操作通常使用xmlstarlet ed命令进行,结合XPath表达式指定要修改的节点。
3、批处理操作
XmlStarlet支持通过批处理文件来执行一系列的XML操作,这有助于自动化处理大量的XML文件,提高工作效率。
4、跨平台支持
XmlStarlet可以在多个操作系统上运行,包括Linux、Windows和Mac OS,这使其成为了一个通用的XML处理工具。
5、转换和格式化
XmlStarlet不仅可以将XML文档转换为其他格式(如HTML、CSV或JSON),还可以格式化XML文档,使其更易于阅读和理解。
6、验证和校验
XmlStarlet可以验证XML文档的结构和语法是否符合特定的规范,如DTD(文档类型定义)或XSD(XML模式定义)。
三、 安装 xmlstarlet
在大多数 Linux 发行版中,可以使用包管理器来安装 xmlstarlet。例如,在基于 Debian 的系统(如 Ubuntu)上,可以使用以下命令:
sudo apt-get install xmlstarlet
实际操作如下:
root@quinn-ThinkPad-T430s:/#
root@quinn-ThinkPad-T430s:/# sudo apt-get install xmlstarlet
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
下列【新】软件包将被安装:
xmlstarlet
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 208 个软件包未被升级。
需要下载 265 kB 的归档。
解压缩后会消耗 631 kB 的额外空间。
获取:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy/universe amd64 xmlstarlet amd64 1.6.1-2.1 [265 kB]
已下载 265 kB,耗时 16秒 (17.0 kB/s)
正在选中未选择的软件包 xmlstarlet。
(正在读取数据库 ... 系统当前共安装有 215859 个文件和目录。)
准备解压 .../xmlstarlet_1.6.1-2.1_amd64.deb ...
正在解压 xmlstarlet (1.6.1-2.1) ...
正在设置 xmlstarlet (1.6.1-2.1) ...
正在处理用于 man-db (2.10.2-1) 的触发器 ...
root@quinn-ThinkPad-T430s:/#
在基于 Red Hat 的系统(如 CentOS)上,则可以使用:
sudo yum install xmlstarlet
四、 基本用法
1、xmlstarlet 的基本语法
xmlstarlet [命令] [选项] [输入文件]
如果没有提供输入文件,xmlstarlet 将从标准输入读取 XML 数据。
2、获取帮助
在命令行模式下输入如下命令:
xmlstarlet --help
操作结果如下图:
五、 常用命令
如下是 xmlstarlet 支持的一些常用命令:
1. ed(编辑) - 用于编辑 XML 文档
- 例如,替换 XML 中的内容:
xmlstarlet ed -u '/path/to/node' -v 'new_value' input.xml > output.xml
2. sel(选择) - 用于查询 XML 文档
- 例如,选择特定的 XML 节点:
xmlstarlet sel -t -v '/path/to/node' input.xml
3. fo(格式化) - 用于格式化 XML 文件,使其更易于阅读
- 例如,格式化 XML 文件:
xmlstarlet fo input.xml > output.xml
4. tr(转换) - 用于将 XML 转换为其他格式
将 XML 转换为其他格式,如 HTML 或文本。
- 例如,将 XML 转换为 HTML:
xmlstarlet tr transform.xsl input.xml > output.html
5. val(验证) - 用于验证 XML 文档是否符合指定的 DTD 或 XML Schema
- 例如,验证 XML 文件:
xmlstarlet val -e input.xml
6. elt(创建元素) - 用于创建新的 XML 元素
- 例如,创建一个新的 XML 元素:
xmlstarlet elt --root root --child mychild --attribute name="value"
六、 使用 XPath 表达式
xmlstarlet 的许多命令都使用 XPath 表达式来定位 XML 文档中的节点。XPath 是一种在 XML 文档中查找信息的语言。
例如,要从 XML 文件中选择所有 title 元素:
xmlstarlet sel -t -m '/bookstore/book/title' -v . -n input.xml
这里的 -m 选项用于匹配节点,-v 用于打印匹配节点的值,-n 用于在每次匹配后添加一个新行。
七、完整的例子
假设有一个名为 books.xml 的 XML 文件,内容如下:
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
<year>2005</year>
</book>
<book>
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
</book>
</bookstore>
若要选择所有书籍的标题,可以使用:
xmlstarlet sel -t -m '/bookstore/book/title' -v . -n books.xml
这将输出:
Harry Potter
Learning XML
实际操作如下:
八、总结
XmlStarlet是一个功能强大的XML处理工具,它通过命令行界面提供了丰富的操作命令,使得用户可以轻松地进行XML文档的查询、修改、验证、转换等操作。无论是在自动化脚本中处理XML数据,还是在日常工作中处理XML文件,XmlStarlet都是一个不可或缺的工具。
文章的正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。