相关:How can I pretty-print JSON in (unix) shell script?
是否有(unix)shell脚本以人类可读的形式格式化XML?
基本上,我希望它改变以下内容:
<root><foo a="b">lorem</foo><bar value="ipsum" /></root>
...进入这样的事情:
<root>
<foo a="b">lorem</foo>
<bar value="ipsum" />
</root>
相关:How can I pretty-print JSON in (unix) shell script?
是否有(unix)shell脚本以人类可读的形式格式化XML?
基本上,我希望它改变以下内容:
<root><foo a="b">lorem</foo><bar value="ipsum" /></root>
...进入这样的事情:
<root>
<foo a="b">lorem</foo>
<bar value="ipsum" />
</root>
5 回答
libxml2-utils
该实用程序随附libxml2-utils:
Perl's XML::Twig
此命令附带XML::Twig perl模块,有时
xml-twig-tools
包:xmlstarlet
此命令附带xmlstarlet:
tidy
检查
tidy
包:Python
Python的
xml.dom.minidom
可以格式化XML:saxon-lint
你需要saxon-lint:
saxon-HE
你需要saxon-HE:
xmllint support formatting in-place:
正如Daniel Veillard所写:
缩进级别由
XMLLINT_INDENT
环境变量控制,默认情况下为2个空格 . 示例如何将缩进更改为4个空格:当XML文档被破坏时,您可能缺少
--recover
选项 . 或者尝试使用严格的XML输出的弱HTML解析器:--nsclean
,--nonet
,--nocdata
,--noblanks
等可能有用 . 阅读手册页 .您也可以使用tidy,这可能需要先安装(例如在Ubuntu上:sudo
apt-get install tidy
) .为此,您将发出以下内容:
注意:有许多额外的可读性标志,但是自动换行(http://tidy.sourceforge.net/docs/quickref.html)的自动换行行为有点烦人 .
xmllint --format yourxmlfile.xml
xmllint是一个命令行XML工具,包含在
libxml2
(http://xmlsoft.org/)中 .================================================
注意:如果您没有安装
libxml2
,可以通过执行以下操作来安装它:CentOS
Ubuntu
sudo apt-get install libxml2-utils
MacOS
要使用Homebrew在MacOS上安装它,只需:
brew install libxml2
您没有提到文件,因此我假设您要在命令行上提供XML字符串作为标准输入 . 在这种情况下,请执行以下操作: