我們先前分享過一篇關(guān)于在命令行中格式化輸出 json 文件的文章,今天我們再來分享一下如何在命令行中格式化輸出 xml。
xml(可擴(kuò)展標(biāo)記語言)也是一種人類可讀的標(biāo)記語言,但是如同 json 文件一樣,沒有縮進(jìn)格式(或者壓縮)的 xml 文件,讀起來那是挺頭疼的。
首先來看一下我們這篇文章要達(dá)到的目的,如下圖所示:
要實(shí)現(xiàn)這種效果,我們總結(jié)了三種方法。 作為演示的例子,我們使用如下文件 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 選項(xiàng),可以讓用戶重新格式化 xml 文件。 如下語法所示:
xmllint --format XML_FILE
比如,作為演示,我們使用 email.xml:
xmllint --format email.xml
格式化輸出,默認(rèn)縮進(jìn)兩個(gè)空格。 如果想要修改為更多的空格(比如4個(gè)空格),可以使用環(huán)境變量 XMLLINT_INDENT。
比如,我們使用 email.xml 作為例子,使其縮進(jìn)為 4 個(gè)空格:
XMLLINT_INDENT=" " xmllint --format email.xml
結(jié)合前一個(gè)例子,大家可以看到區(qū)別嗎?
方法2:使用 XMLStarlet 工具包
XMLStarlet 提供了一組命令,分別用于不同的目的。 其中涉及到了 xml 命令,可以通過該命令來執(zhí)行與 xml 文件相關(guān)的操作。
但是在使用之前,需要手動(dòng)安裝,如下所示:
sudo snap install xmlstarlet
要格式化輸出 xml,需要使用 xml 命令的 format 選項(xiàng),如下所示:
xml format email.xml
另外,它還提供了一些其他的選項(xiàng),如下:
- -n 不添加空格,結(jié)果類似于文本向左對(duì)齊;
- -t 使用 tab 鍵輸出以提高可讀性;
- -o 省略 xml 生命,除了在文件的頂部添加 ;
- -s 添加任意數(shù)量的空格。
比如,我們使用 fo 添加 6 個(gè)空格來格式化輸出 xml 文件:
xml fo -s 6 email.xml
方法3:使用 xml_pp 命令
這個(gè)方法不是很靈活,因?yàn)?xml_pp 是 Perl 的一個(gè)模塊,名為 XML::Twig。
它不會(huì)輸出內(nèi)容,但是會(huì)直接修改源文件。
它在使用之前,同樣需要手動(dòng)安裝。 如果你使用的是基于 Debian 的系統(tǒng),可使用如下命令:
sudo apt install xml-twig-tools
比如,我們使用 record 模式來格式化輸出 email.xml:
這里,-i 選項(xiàng)用于在原始文件中進(jìn)行更改,同時(shí)用于附加擴(kuò)展名。
-s 選項(xiàng)用于使用樣式選項(xiàng),這里我使用了 record。
-
Linux
+關(guān)注
關(guān)注
87文章
11304瀏覽量
209535 -
XML
+關(guān)注
關(guān)注
0文章
188瀏覽量
33085 -
格式化
+關(guān)注
關(guān)注
2文章
39瀏覽量
9116 -
文件
+關(guān)注
關(guān)注
1文章
566瀏覽量
24748 -
命令行
+關(guān)注
關(guān)注
0文章
77瀏覽量
10392
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論