自学内容网 自学内容网

Linux命令:用于处理 XML 文档的强大的命令行工具xmlstarlet 详解

目录

一、概述

二、功能特点

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 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。



原文地址:https://blog.csdn.net/weixin_70208651/article/details/142602283

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!