我們先前分享過一篇關于在命令行中格式化輸出 json 文件的文章,今天我們再來分享一下如何在命令行中格式化輸出 xml。
xml(可擴展標記語言)也是一種人類可讀的標記語言,但是如同 json 文件一樣,沒有縮進格式(或者壓縮)的 xml 文件,讀起來那是挺頭疼的。
首先來看一下我們這篇文章要達到的目的,如下圖所示:
要實現這種效果,我們總結了三種方法。 作為演示的例子,我們使用如下文件 email.xml:
<emails> <email> <from>Sagarfrom> <to>Milanto> <time>2022-10-14time>
<subject>Writing a lot these dayssubject>email> <email>
<from>Sagarfrom> <to>Arvindto> <time>2022-10-13time> <subject>Heyy, send me the Goa pictures ASAP!subject>
email> emails>
方法1:使用 xmllint 格式化打印 xml
xmllint 工具提供了 --format 選項,可以讓用戶重新格式化 xml 文件。 如下語法所示:
xmllint --format XML_FILE
比如,作為演示,我們使用 email.xml:
xmllint --format email.xml
格式化輸出,默認縮進兩個空格。 如果想要修改為更多的空格(比如4個空格),可以使用環境變量 XMLLINT_INDENT。
比如,我們使用 email.xml 作為例子,使其縮進為 4 個空格:
XMLLINT_INDENT=" " xmllint --format email.xml
結合前一個例子,大家可以看到區別嗎?
方法2:使用 XMLStarlet 工具包
XMLStarlet 提供了一組命令,分別用于不同的目的。 其中涉及到了 xml 命令,可以通過該命令來執行與 xml 文件相關的操作。
但是在使用之前,需要手動安裝,如下所示:
sudo snap install xmlstarlet
要格式化輸出 xml,需要使用 xml 命令的 format 選項,如下所示:
xml format email.xml
另外,它還提供了一些其他的選項,如下:
- -n 不添加空格,結果類似于文本向左對齊;
- -t 使用 tab 鍵輸出以提高可讀性;
- -o 省略 xml 生命,除了在文件的頂部添加 ;
- -s 添加任意數量的空格。
比如,我們使用 fo 添加 6 個空格來格式化輸出 xml 文件:
xml fo -s 6 email.xml
方法3:使用 xml_pp 命令
這個方法不是很靈活,因為 xml_pp 是 Perl 的一個模塊,名為 XML::Twig。
它不會輸出內容,但是會直接修改源文件。
它在使用之前,同樣需要手動安裝。 如果你使用的是基于 Debian 的系統,可使用如下命令:
sudo apt install xml-twig-tools
比如,我們使用 record 模式來格式化輸出 email.xml:
這里,-i 選項用于在原始文件中進行更改,同時用于附加擴展名。
-s 選項用于使用樣式選項,這里我使用了 record。
-
Linux
+關注
關注
87文章
11345瀏覽量
210391 -
XML
+關注
關注
0文章
188瀏覽量
33140 -
格式化
+關注
關注
2文章
39瀏覽量
9143 -
文件
+關注
關注
1文章
570瀏覽量
24822 -
命令行
+關注
關注
0文章
78瀏覽量
10420
發布評論請先 登錄
相關推薦
評論