sublime text 本身不校验 xml,需依赖 xmllint + sublimelinter-contrib-xml 组合实现保存时实时报错;若 ctrl+s 后无提示,90% 原因为:右下角语法未设为 xml、xmllint --version 在终端不可用、sublime 未继承系统 path;报错仅显示“not well-formed”时,应通过 xmlvalidation.com 或 python 的 et.parse 定位具体行与列,并统一文件编码与 xml 声明一致。

Sublime Text 本身不校验 XML,必须靠 xmllint + SublimeLinter-contrib-xml 这套组合才能在保存时实时报错——不是装个插件就自动亮红标,漏了任一环节都会静默失效。
为什么 Ctrl+S 后没报错?先查这三件事
90% 的“校验不工作”问题出在这三个地方,而不是插件没装好:
- 右下角状态栏显示的不是
XML,而是Plain text或HTML—— 点它 → 搜XML→ 选带图标的那个 -
xmllint --version在终端里跑不通:macOS 用brew install libxml2;Windows 需手动下载xmllint.exe并加进系统PATH;Linux 一般自带,但得确认不是阉割版(比如 Alpine 默认没装) - Sublime 是双击图标启动的,没继承 shell 的
PATH:macOS/Linux 用户请从终端执行subl .打开项目;Windows 用户可在 Sublime 控制台(Ctrl+`)里运行import os; print(os.environ.get('PATH')),看输出里有没有xmllint所在路径
报错信息只显示“not well-formed”,怎么定位具体哪一行?
SublimeLinter-contrib-xml 依赖 xmllint 解析,而 xmllint 的错误提示非常原始,常只说“line 123: …”却不告诉你错在哪种 token。这时要人工交叉验证:
- 复制全部内容,粘到 xmlvalidation.com —— 它会高亮错误位置并解释原因(比如 “
&must be escaped as&”) - 终端里跑:
python -c "import xml.etree.ElementTree as ET; ET.parse('test.xml')"—— Python 的报错更直白,比如xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 45, column 12 - 用
Ctrl+F搜&、、<code>,重点检查裸露的&、未闭合的注释











