svi*_*gen 490 xml unix command-line
是否有(unix)shell脚本以人类可读的形式格式化XML?
基本上,我希望它改变以下内容:
<root><foo a="b">lorem</foo><bar value="ipsum" /></root>
Run Code Online (Sandbox Code Playgroud)
...进入这样的事情:
<root>
<foo a="b">lorem</foo>
<bar value="ipsum" />
</root>
Run Code Online (Sandbox Code Playgroud)
Gil*_*not 849
libxml2-utils
该实用程序附带libxml2-utils:
echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
xmllint --format -
Run Code Online (Sandbox Code Playgroud)
Perl的 XML::Twig
此命令附带XML :: Twig perl模块,有时xml-twig-tools包:
echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
xml_pp
Run Code Online (Sandbox Code Playgroud)
xmlstarlet
此命令附带xmlstarlet:
echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
xmlstarlet format --indent-tab
Run Code Online (Sandbox Code Playgroud)
tidy
检查tidy包裹:
echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
tidy -xml -i -
Run Code Online (Sandbox Code Playgroud)
蟒蛇
Python xml.dom.minidom可以格式化XML(python2和python3):
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())'
Run Code Online (Sandbox Code Playgroud)
saxon-lint
你需要saxon-lint:
echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' |
saxon-lint --indent --xpath '/' -
Run Code Online (Sandbox Code Playgroud)
saxon-HE
你需要saxon-HE:
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'
Run Code Online (Sandbox Code Playgroud)
crm*_*cco 145
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
Run Code Online (Sandbox Code Playgroud)
Ubuntu的
sudo apt-get install libxml2-utils
Cygwin的
apt-cyg install libxml2
苹果系统
要使用Homebrew在MacOS上安装它,请执行以下操作:
brew install libxml2
混帐
如果你想要代码,也可以在Git上使用:
git clone git://git.gnome.org/libxml2
mat*_*ter 37
您也可以使用整洁,可能需要先安装(例如在Ubuntu:sudo上apt-get install tidy).
为此,您将发出以下内容:
tidy -xml -i your-file.xml > output.xml
Run Code Online (Sandbox Code Playgroud)
注意:有许多额外的可读性标志,但是自动换行的行为有点烦人(http://tidy.sourceforge.net/docs/quickref.html).
Dav*_*vid 13
您没有提到文件,因此我假设您要在命令行上提供XML字符串作为标准输入.在这种情况下,请执行以下操作:
$ echo '<root><foo a="b">lorem</foo><bar value="ipsum" /></root>' | xmllint --format -
Run Code Online (Sandbox Code Playgroud)
for f in *.xml; do xmllint -o $f --format $f; done
Run Code Online (Sandbox Code Playgroud)
正如Daniel Veillard所写:
我认为
xmllint -o tst.xml --format tst.xml应该是安全的,因为解析器会在打开输出以将其序列化之前将输入完全加载到树中.
缩进级别由XMLLINT_INDENT环境变量控制,默认情况下为2个空格.示例如何将缩进更改为4个空格:
XMLLINT_INDENT=' ' xmllint -o out.xml --format in.xml
Run Code Online (Sandbox Code Playgroud)
--recover当XML文档被破坏时,您可能缺少选项.或者尝试使用严格的XML输出的弱HTML解析器:
xmllint --html --xmlout <in.xml >out.xml
Run Code Online (Sandbox Code Playgroud)
--nsclean,--nonet,--nocdata,--noblanks等可能是有用的.阅读手册页.
apt-get install libxml2-utils
apt-cyg install libxml2
brew install libxml2
Run Code Online (Sandbox Code Playgroud)
tidycat filename.xml | tidy -xml -iq
使用cat重定向查看文件以整洁地指定xml的文件类型,并在静默输出时缩进以抑制错误输出。JSON也可用于-json。
| 归档时间: |
|
| 查看次数: |
274816 次 |
| 最近记录: |