在 Bash 中解析 XML
几乎不可能找到仍然不使用 XML 的开发人员。 它是一种流行的标记语言,广泛用于构建和传输数据。
本文将展示我们如何通过 Bash 解析 XML。
我们将在这里讨论两个库。 我们的第一个库是 xmllint,第二个库称为 XMLStarlet。
在使用它们之前,您需要安装它们。
在 Bash 中使用 xmllint 解析 XML
这是可用于解析 XML 文件的最常见的库。 但是您必须先下载并安装该库,然后才能使用它。
要安装此库,您需要执行以下命令。
sudo apt-get update -qq
sudo apt-get install -y libxml2-utils
我们必须使用 apt-get
安装 libxml2-utils 包。
如果您有一个名为 MyXML.xml 的 XML 文件,您可以使用以下命令轻松获取 XML。
xmllint MyXML.xml
执行上述命令后,您将获得如下输出。
<?xml version="1.0"?>
<specification>
<type>Laptop</type>
<model>Macbook</model>
<screenSizeInch>14</screenSizeInch>
</specification>
该库包含一些选项或标志。 库的可用选项在下面共享。
- --auto - 此标志用于生成用于测试的文档。
- --catalogs - 此标志用于使用来自 SGML_CATALOG_FILES 的目录。 否则,默认使用 /etc/xml/catalog。
- --chkregister - 此标志用于打开节点注册。
- --compress - 此标志用于打开输出的 gzip 压缩。
- --copy - 此标志用于测试内部复制实现。
- --c14n - 此标志用于使用 W3C XML 规范化 (C14N) 序列化通过 stdout 解析的结果。 它还在结果中保留评论。
- --dtdvalid URL - 此标志用于使用 URL 指定的 DTD 进行验证。
- --dtdvalidfpi FPI - 此标志用于使用用于验证的公共标识符 FPI 指定的 DTD; 请注意,此标志将需要作为公共标识符工作的目录导出。
- --debug - 此标志用于解析文件。 它还输出一个带注释的树,它是文档的内存版本。
- --debugent - 此标志用于调试文档中定义的实体。
- --dropdtd - 此标志用于从输出中删除 DTD。
- --dtdattr - 此标志将获取外部 DTD。 它还使用继承属性填充树。
- --encode - 此标志将提供给定编码的输出。
- --format - 此标志将重新格式化并重新缩进输出。
- --help - 此标志将打印出 xmllint 用法的摘要。
- --html - 此标志用于使用 HTML 解析器。
- --htmlout - 此标志会将结果显示为 HTML 文件。 它将在结果树输出周围输出必要的 HTML 标记,以便可以在浏览器中显示/查看结果。
- --insert - 此标志用于测试有效插入。
- --loaddtd - 此标志用于获取外部 DTD。
- --load-trace - 此标志将显示处理到 stderr 时加载的所有文档。
- --maxmem NNBYTES - 此标志用于测试解析器内存支持。 这里,NNBYTES 是库可以分配的最大字节数。
- --memory - 此标志用于从内存中解析。
- --noblanks - 此标志将删除可忽略的空格。
- --nocatalogs - 此标志指定不使用任何目录。
- --nocdata - 此标志将通过等效文本节点替换 CDATA 部分。
- --noent - 此标志将用实体值替换实体引用。
- --nonet - 此标志指定不使用互联网来获取 DTD 或实体。
- --noout - 此标志将抑制输出。 默认情况下,xmllint 将显示结果树的输出。
- --nowarning - 此标志指定不从验证器和/或解析器发出警告。
- --nowrap - 此标志指定不输出 HTML 文档包装器。
- --noxincludenod - 此标志用于执行 XInclude 处理,但指定不生成 XInclude 开始和结束节点。
- --nsclean - 此标志用于删除多余的名称空间声明。
- --output FILE - 该标志定义了 xmllint 保存解析结果的文件路径。
- --path "PATH(S)" - 此标志用于使用由 PATHS 指定的(以冒号分隔或空格分隔的)文件系统路径列表来加载 DTD 或实体。 在这里,空格分隔的列表用引号括起来。
- --pattern PATTERNVALUE - 此标志用于练习可与阅读器界面一起使用的模式识别引擎。 它还用于调试。
- --postvalid - 此标志用于在解析完成后进行验证。
- --push - 此标志启用推送模式。
- --recover - 此标志用于输出无效文档的任何可解析部分。
- --relaxng SCHEMA - 此标志将使用名为 SCHEMA 的 RelaxNG 文件进行验证。
- --repeat - 此标志用于重复 100 次以进行计时或分析。
- --schema - 此标志将使用称为 SCHEMA 的 W3C XML 架构文件。
- --shell - 运行导航 shell。
- --stream - 此标志用于流式传输 API。
- --testIO - 此标志将测试用户输入/输出支持。
- --timing - 此标志将输出有关 xmllint 执行各个步骤所用时间的信息。
- --valid - 此标志将检查文档的有效性。
- --version - 此标志将显示库的版本。
- --walker - 此标志将测试 walker 模块
- --xinclude - 此标志将执行 XInclude 处理。
- --xmlout - 此标志主要与--html 结合使用。 它将使用 XML 序列化程序保存文档。 它主要用于从HTML 到XHTML 的转换。
在 Bash 中使用 XMLStarlet 解析 XML
另一个用于解析任何 XML 文档的流行库称为 XMLStarlet。 该库的主要命令是 xmlstarlet。
您必须以 root 身份执行以下命令才能安装此库。
sudo dnf install xmlstarlet
它包含使验证、转换或查询 XML 文件更容易的有用选项。 您可以通过库最简单的命令轻松获取 XML 文件。
xmlstarlet format MyXML.xml
执行上述命令后,您将看到 XML 文件的内容作为如下输出。
<?xml version="1.0"?>
<specification>
<type>Laptop</type>
<model>Macbook</model>
<screenSizeInch>14</screenSizeInch>
</specification>
本文中使用的所有代码都是用 Bash 编写的。 它只会在 Linux Shell 环境中工作。
相关文章
Bash 脚本中的 Echo Tab 字符
发布时间:2023/06/11 浏览次数:198 分类:操作系统
-
本文演示了如何回显特殊字符(例如制表符),否则这些字符会在 Bash 脚本中转换为单个空格字符。 这扩展到 Bash 以外的 shell(例如 zsh)。
在 Bash 中回显到 stderr
发布时间:2023/06/11 浏览次数:102 分类:操作系统
-
本文将了解 stderr 及其功能。 此外,我们将查看一些示例,这些示例将使该主题更容易理解。在 Bash 中回显到 stderr 命令 stderr 主要用于在执行任何命令期间保持错误的重新编码。
在 Bash 中连接多个文件
发布时间:2023/06/10 浏览次数:170 分类:操作系统
-
有时出于各种目的,我们需要将多个文件连接成一个文件。 在 Bash 脚本中,很容易完成这项任务。在 Bash 中连接多个文件
在 Bash 中打开 Emacs
发布时间:2023/06/10 浏览次数:50 分类:操作系统
-
本文将展示我们如何在 Bash 中打开 Emacs。 我们还将讨论如何安装 Emacs 文本编辑器。在您的系统中安装 EMACS 假设您的系统中没有 Emacs。
在 Bash 中清除终端屏幕
发布时间:2023/06/10 浏览次数:101 分类:操作系统
-
有多种方法可以在 bash 脚本中清除终端。 本文将讨论 3 种清除终端的方法。使用 tput reset 清除终端屏幕 第一种方法使用关键字 tput reset 来清除屏幕。
在 Bash 中使用双管道和单管道
发布时间:2023/06/10 浏览次数:122 分类:操作系统
-
在本文中,我们将了解如何使用双管道(也称为 OR)和 Bash 脚本中的管道。 此外,我们将看到必要的示例和解释,以使主题更容易理解。在Bash中使用双管道 ||
在 Bash 中跳出循环
发布时间:2023/06/10 浏览次数:163 分类:操作系统
-
我们将停止三个最常用的循环:while、for 和 until。 让我们一一开始。跳出 Bash 中的 while 循环;跳出 Bash 中的 until 循环
从命令行重新加载 .bash_profile
发布时间:2023/06/10 浏览次数:116 分类:操作系统
-
本文将展示我们如何在 macOS 中创建、删除和编辑 .bash_profile。 我们将通过必要的命令逐步学习它们。创建 .bash_profile;编辑并重新加载 .bash_profile。
macOS 中的 Bash 配置文件
发布时间:2023/06/10 浏览次数:115 分类:操作系统
-
在本文中,我们将讨论如何在 macOS 中创建、删除和编辑 bash 配置文件。创建 .bash_profile;编辑 .bash_profile