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