如何从命令行漂亮地打印XML?

相关:如何在(unix)shell脚本中漂亮地打印JSON?

是否有(unix)shell脚本以可读的形式格式化XML?

基本上,我希望它改变以下内容:

<root><foo a="b">lorem</foo><bar value="ipsum" /></root>

...变成这样的东西:

<root>
    <foo a="b">lorem</foo>
    <bar value="ipsum" />
</root>

尝试这样做:

echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
    xmllint --format -

该实用程序随libxml2-utils一起提供

要么

echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
    xml_pp

该命令附带XML :: Twig perl模块,有时是xml-twig-tools软件包。

要么

echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
    xmlstarlet format --indent-tab

这个命令附带了xmlstarlet

要么

echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
    tidy -xml -i -

检查tidy包裹

要么

echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
    python -c 'import sys;import xml.dom.minidom;s=sys.stdin.read();print xml.dom.minidom.parseString(s).toprettyxml()'

要么

echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
    saxon-lint --indent --xpath '/' -  

检查撒克逊皮棉

要么

 echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
    java -cp /usr/share/java/saxon/saxon9he.jar net.sf.saxon.Query 
    -s:- -qs:/ '!indent=yes'

检查撒克逊 - 他


xmllint --format yourxmlfile.xml

xmllint是一个命令行XML工具,包含在libxml2 (http://xmlsoft.org/)中。

================================================

注意:如果您没有安装libxml2 ,则可以通过执行以下操作来安装它:

CentOS的

cd /tmp
wget ftp://xmlsoft.org/libxml2/libxml2-2.8.0.tar.gz
tar xzf libxml2-2.8.0.tar.gz
cd libxml2-2.8.0/
./configure
make
sudo make install
cd

Ubuntu的

sudo apt-get install libxml2-utils

苹果系统

要在MacOS上用Homebrew安装它,只需要: brew install libxml2


你也可以使用tidy,它可能需要先安装(例如在Ubuntu上:sudo apt-get install tidy )。

为此,您可以执行以下操作:

tidy -xml -i your-file.xml > output.xml

注意:有许多额外的可读性标志,但自动换行行为对于解决问题有点烦人(http://tidy.sourceforge.net/docs/quickref.html)。

链接地址: http://www.djcxy.com/p/1287.html

上一篇: How to pretty print XML from the command line?

下一篇: Printing JSON with PHP