Linux 命令行中的漂亮打印 XML

虽然 XML(可扩展标记语言)是一种人类可读的标记语言,但您很可能会发现 XML 文件的非结构化程度足以让您头疼!

但首先,让我分享您在本指南之后获得的最终结果:

最终结果

为了实现这些结果,我编写了本指南,其中涉及三种格式化 XML 并使其可读的方法。

在终端中漂亮地打印 XML 文件

在完成该过程之前,让我分享一下我将在整个教程中使用的非结构化 XML:

<emails> <email> <from>Sagar</from> <to>Milan</to> <time>2022-10-14</time>
<subject>Writing a lot these days</subject></email> <email>
<from>Sagar</from> <to>Arvind</to> <time>2022-10-13</time> <subject>Heyy, send me the Goa pictures ASAP!</subject>
</email> </emails>

示例文件 email.xml 包含两封电子邮件,我将格式化此文件以减少我经常遇到的头痛! 所以让我们从第一个开始:

方法一:使用 xmllint 漂亮地打印 XML

xmllint 实用程序为我们提供了 --format 用户可以重新格式化他们的 XML 文件的选项。 要使用 xmllint 重新格式化 XML 文件,您只需遵循给定的语法:

xmllint --format XML_FILE

为了演示,我将使用 email.xml 文件:

xmllint --format email.xml

默认意图是添加两个空格 但是如果你想添加更多呢? 您可以使用 XMLLINT_INDENT 环境变量。

为了 example,我将在我的 email.xml 中添加四个空格:

XMLLINT_INDENT="    " xmllint --format email.xml
更改 linux 中 XML 样式的默认意图

看出区别了吗?

方法二:使用 XMLStarlet 工具包

XMLStarlet 是一组用于不同目的的命令行实用程序。 它利用 xml 您可以通过该命令执行几乎所有与 XML 文件相关的操作!

但它需要手动安装,并且有一个 snap 包可以帮助您入门:

sudo snap install xmlstarlet

要格式化您的 XML 文件,您只需配对 format 选项与 xml 命令如下图:

xml format email.xml
使用 xml 命令在 linux 中漂亮地打印 XML

正如我之前提到的,它为我们提供了各种选项,并且有四个格式化选项:

  • -n 不会打算输出。 这意味着它不会添加空格,并且结果将类似于将文本向左对齐时的结果。
  • -t 将使用选项卡的输出以获得更好的可见性。
  • -o 省略 XML 声明。 无非是加 <?xml version=”1.0″?> 在 XML 文件的顶部。
  • -s 增加了空间。 所以你可以决定你想要的空间斯托克斯的数量!

为了 example,我将添加六个空间打算使用 fo 允许格式化:

xml fo -s 6 email.xml
使用 xml 命令在 linux 中设置 XML 文件的样式

方法 3:使用 xml_pp 命令

在格式化 XML 文件时,这是最不灵活的选项,因为 xml_pp 是名为的 Perl 模块的一部分 XML::Twig.

这是修改本身是专业的直接文件的唯一选项。 不是吗?

但它需要手动安装,如果您使用的是基于 Debian 的发行版,给定的命令将完成您的工作:

sudo apt install xml-twig-tools

为了 example,我将使用 record 格式化样式 email.xml

使用 xml_pp 命令在 linux 中漂亮地打印 XML

在这里, -i 用于在原始文件中进行更改,同时用于附加扩展名。

-s 选项是使用样式选项,我选择了样式名称 record.

最后的话

通过本指南,我解释了如何格式化 XML 文件,使其更具可读性。

如果您有任何疑问,请在评论部分设置样式。