迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

在 Bash 中解析 XML

作者:迹忆客 最近更新:2023/06/10 浏览次数:

几乎不可能找到仍然不使用 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>

该库包含一些选项或标志。 库的可用选项在下面共享。

  1. --auto - 此标志用于生成用于测试的文档。
  2. --catalogs - 此标志用于使用来自 SGML_CATALOG_FILES 的目录。 否则,默认使用 /etc/xml/catalog。
  3. --chkregister - 此标志用于打开节点注册。
  4. --compress - 此标志用于打开输出的 gzip 压缩。
  5. --copy - 此标志用于测试内部复制实现。
  6. --c14n - 此标志用于使用 W3C XML 规范化 (C14N) 序列化通过 stdout 解析的结果。 它还在结果中保留评论。
  7. --dtdvalid URL - 此标志用于使用 URL 指定的 DTD 进行验证。
  8. --dtdvalidfpi FPI - 此标志用于使用用于验证的公共标识符 FPI 指定的 DTD; 请注意,此标志将需要作为公共标识符工作的目录导出。
  9. --debug - 此标志用于解析文件。 它还输出一个带注释的树,它是文档的内存版本。
  10. --debugent - 此标志用于调试文档中定义的实体。
  11. --dropdtd - 此标志用于从输出中删除 DTD。
  12. --dtdattr - 此标志将获取外部 DTD。 它还使用继承属性填充树。
  13. --encode - 此标志将提供给定编码的输出。
  14. --format - 此标志将重新格式化并重新缩进输出。
  15. --help - 此标志将打印出 xmllint 用法的摘要。
  16. --html - 此标志用于使用 HTML 解析器。
  17. --htmlout - 此标志会将结果显示为 HTML 文件。 它将在结果树输出周围输出必要的 HTML 标记,以便可以在浏览器中显示/查看结果。
  18. --insert - 此标志用于测试有效插入。
  19. --loaddtd - 此标志用于获取外部 DTD。
  20. --load-trace - 此标志将显示处理到 stderr 时加载的所有文档。
  21. --maxmem NNBYTES - 此标志用于测试解析器内存支持。 这里,NNBYTES 是库可以分配的最大字节数。
  22. --memory - 此标志用于从内存中解析。
  23. --noblanks - 此标志将删除可忽略的空格。
  24. --nocatalogs - 此标志指定不使用任何目录。
  25. --nocdata - 此标志将通过等效文本节点替换 CDATA 部分。
  26. --noent - 此标志将用实体值替换实体引用。
  27. --nonet - 此标志指定不使用互联网来获取 DTD 或实体。
  28. --noout - 此标志将抑制输出。 默认情况下,xmllint 将显示结果树的输出。
  29. --nowarning - 此标志指定不从验证器和/或解析器发出警告。
  30. --nowrap - 此标志指定不输出 HTML 文档包装器。
  31. --noxincludenod - 此标志用于执行 XInclude 处理,但指定不生成 XInclude 开始和结束节点。
  32. --nsclean - 此标志用于删除多余的名称空间声明。
  33. --output FILE - 该标志定义了 xmllint 保存解析结果的文件路径。
  34. --path "PATH(S)" - 此标志用于使用由 PATHS 指定的(以冒号分隔或空格分隔的)文件系统路径列表来加载 DTD 或实体。 在这里,空格分隔的列表用引号括起来。
  35. --pattern PATTERNVALUE - 此标志用于练习可与阅读器界面一起使用的模式识别引擎。 它还用于调试。
  36. --postvalid - 此标志用于在解析完成后进行验证。
  37. --push - 此标志启用推送模式。
  38. --recover - 此标志用于输出无效文档的任何可解析部分。
  39. --relaxng SCHEMA - 此标志将使用名为 SCHEMA 的 RelaxNG 文件进行验证。
  40. --repeat - 此标志用于重复 100 次以进行计时或分析。
  41. --schema - 此标志将使用称为 SCHEMA 的 W3C XML 架构文件。
  42. --shell - 运行导航 shell。
  43. --stream - 此标志用于流式传输 API。
  44. --testIO - 此标志将测试用户输入/输出支持。
  45. --timing - 此标志将输出有关 xmllint 执行各个步骤所用时间的信息。
  46. --valid - 此标志将检查文档的有效性。
  47. --version - 此标志将显示库的版本。
  48. --walker - 此标志将测试 walker 模块
  49. --xinclude - 此标志将执行 XInclude 处理。
  50. --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 字符

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

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

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便