linux环境中使用xmllint就可以实现对xml文件的格式化功能。
1、安装libxml2。
Libxml2 是一个xml的c语言版的解析器,本来是为Gnome项目开发的工具,是一个基于MIT License的免费开源软件。
具体的介绍请参考 http://xmlsoft.org/。
- 直接使用 xmllint 可能报错,如果报错,请安装 libxml2
/bin/bash: xmllint: 未找到命令
Ubuntu sudo apt-get install libxml2-utils
CentOS sudo yum install libxml2
Mac OS sudo brew install libxml2
2、使用xmllint命令格式化xml文件
在终端执行
xmllint –format ***.xml
即可输出格式化后的xml文件。
在 vim 中可以配置 .vimrc 来设置格式化的快捷键。
map <F2> :silent 1,$!xmllint -format -recover - 2>/dev/null <CR>
这样在重新启动vim时就可以用F2快捷键来对xml文件进行格式化了.
-
silent
- To run an external command without the Press ENTER or type command to continue prompt, use `:silent !.
- 通常在使用!运行外部Shell命令时,将显示提示信息“Press ENTER or type command to continue”,需要用户点击回车键才可以返回常规模式。
如果不希望显示提示信息,那么可以使用:silent命令::silent !echo 'Hello World'
-
1,$
从第一行到文件结尾 -
! {command} 执行外部命令
-
- 代表标准输入 或 标准输出
-
% 当前文件
-
–recover
- Output any parsable portions of an invalid document.
-
–format
- Reformat and reindent the output. The XMLLINT_INDENT environment variable controls the indentation. The default value is two spaces " ").
-
1,$
代表第一行到最后一行。 -
!xmllint -format -recover -
用当前文件( 第一行到最后一行 )做输入,格式化后,从第一行开始,输出到标准输出( - 代表标准输出 ),再从标准输出到当前 vim buffer, 替换本文内容。
* :$ !command
将shell命令command的结果插入到当前行
-
:r !command
将shell命令command的结果插入到当前行的下一行
-
2>/dev/null
错误信息直接重定向到黑洞。 -
<CR>
回车,直接执行。
3、xml 标签中有中文使用 xmllint 格式化会出现乱码
在文件头部加上 encoding=“utf-8” 就可以了。
<?xml version="1.0" encoding="utf-8"?>
...
<description>
hive队列中任务的默认生命时长
</description>
...