XML Tools是Sublime Text中唯一可靠实现XML自动排版的插件,基于libxml2解析,支持精准报错、注释与CDATA保留、属性排序等;失效主因是语法未识别为XML、编码含BOM或XML结构非法。

Sublime Text 本身不带 XML 格式化能力,所谓“好用”的插件只有 XML Tools 算得上真能用;其他名字带 XML 的插件,基本是字符串替换或静默失效,别装。
为什么 XML Tools 是唯一可信赖的选择
它基于 libxml2 解析,行为接近终端命令 xmllint --format,不是靠正则硬切。这意味着:
- 能精准报错:比如在第 42 行发现裸露的
&,而不是整段变红后让你自己猜 - 保留语义:注释位置不动、CDATA 块原样输出、不把
错改成 - 支持属性排序(需手动配置
sort_attributes)、实体展开(expand_entities)、缩进大小控制(indentation_size)
XML Tools 没反应?先查这三件事
它不是“点一下就整齐”,而是先过解析关。常见卡死原因:
-
&字符没转义:如price=10&20必须写成price=10&20 - 属性值缺引号:
是非法 XML,必须为或 - 编码含 BOM:
\ufeff开头导致UnicodeDecodeError;解决方式是菜单File → Reopen with Encoding → UTF-8,再Save with Encoding → UTF-8
验证是否真装对:打开命令面板 Ctrl+Shift+P,输入 XML Tools: Pretty Print (XML) 能出现且可执行才算成功。
大文件或格式化失败时,别硬扛
XML Tools 是内存全量加载,2MB 以上就容易卡死或无响应:
- 超长单行 XML(如日志拼接体)优先试
Sublime-HTMLPrettify,但必须在 Settings – User 中显式启用 XML 支持:"xml": {"enabled": true} - 一旦界面卡住超 5 秒,立即中断;新建空白窗口 →
View → Syntax → XML→ 再试,避开原文件锁 - 终极兜底用命令行:
xmllint --format input.xml > output.xml;macOS 用brew install libxml2,Ubuntu 用sudo apt install libxml2-utils
别指望它做超出规范的事
它的行为由 XML 规范硬约束,不是配置能绕开的:
- 不提供“删除注释”或“强制展开 CDATA”开关——它默认保留,改不了
- 没有
format_on_save选项,设置里搜不到就是真没有 - 缩进可调,但注释对齐、CDATA 折行、属性换行策略全不可控,这是设计使然,不是 bug
真正麻烦的从来不是怎么按快捷键,而是 XML 文件本身是否合法;格式化前花 30 秒用 Python 验证:python -c "import xml.etree.ElementTree as ET; ET.parse('test.xml')",比看 Sublime 弹窗更准。











