🧭 XML 格式化校验

格式化 · 压缩 · 校验 · 结构树 · 转 JSON · 本地处理
缩进
|
属性
|
文本空白
|
压缩
|
实时校验
|
自动换行
输入字符
—
行数
—
元素
—
属性
—
最大深度
—
实体引用
—
混排元素
—
输出体积
—
📥 输入 等待输入
📤 输出
等待结果
—
输入已经改动,右侧结果还是上一次的结果。
❌
—
—
问题清单 错误 0 提醒 0
🔒数据不上传,纯浏览器本地处理
⚡实时校验,边输边提示
🎯报错精确定位到 行 + 列,且是中文说明
🈁拖入文件自动识别 UTF-8 / GBK / Big5
🎯
中文报错 + 跳转 「第 4 行第 12 列:结束标签配不上最外层还没闭合的」,一键把光标放到出错处
🧬
内容逐字不动 &、A、CDATA、属性引号原样保留,只重排缩进
🌳
结构树 折叠展开、按标签名与值搜索、带路径序号、逐节点复制原文
🧩
XML 转 JSON 属性变 @名字、同名兄弟变数组、文字变 #text,接口对接直接用
🧭
命名空间检查 前缀没声明、xmlns:xml、声明了没用到,逐条指出在哪个元素上
🈁
编码自动判断 BOM 优先,再按声明与字节严格试解,GBK 文件不会变成满屏替换符
🔓
转义 / 还原实体 日志和代码里拷来的 <、
 一键还原,也能反向转回去
📂
文件直接拖进来 带文件名下载结果,中间步骤可「结果取回输入」接着处理

这一版 XML 工具的口径说明

报错能不能直接看懂、能不能跳到那一行?

能。校验失败时错误面板给出第几行第几列和原因(比如「结束标签 </a> 配不上最外层还没闭合的 <b>,它在第 2 行打开」「属性「id」后面缺少 = 和带引号的值」「实体「&nbsp;」没有声明过」),面板下方附出错那一行并用 ‹› 标出问题字符,点「跳到出错处」把光标放到那个字符。清单区把所有错误和提醒逐条列出,点任意一条就定位到那一行。错误超过 500 条会截断并注明。

格式化会不会改动我的内容?

不会。「文本空白」默认开启(原样保留),此时元素内部的文字、换行、CDATA 里的内容一律逐字不动;关闭它才会把元素内的多行文字并成一行、把连续空白压成一个空格。实体写法(&amp;、&#65;)、属性用的单引号还是双引号、<a/> 与 <a></a> 的差别都原样保留。缩进可选 2 空格、4 空格、Tab,属性可以分行写。格式化同一个文档两次结果完全一致。

压缩做了什么?

压缩只删元素之间那些纯换行缩进的空白,标签内部的文字不动,CDATA 与注释也保留;勾上「去注释」才连注释一起去掉。压缩结果再格式化一次,和直接格式化的缩进层级一致。

结构树和文本视图是什么关系?

文本视图是处理结果的逐字内容,结构树是按 XML 语法把这份文本逐层展开的样子:折叠、展开、搜索、逐节点复制都只影响视图。每一行显示的都是文本里的原样写法,路径带同名序号(如 /bookmarks/folder[1]/bookmark[2]),点「复制」拿到的是那一段原文。右侧有结果时树取右侧结果,右侧还空着时按左侧输入显示。树一次最多渲染 2000 行,到上限会注明,此时搜索只覆盖已渲染的部分。

XML 转 JSON 按什么规则?

属性变成 @名字,元素内只有文字时直接写成字符串,既有属性又有文字时文字放进 #text,同一层出现多个同名标签合并成数组,空元素写成空字符串,注释跳过,xmlns 与 xmlns:前缀 这类声明不进结果(前缀保留在名字里),实体引用会解码成真实字符。这份规则与常见接口框架的读法一致,转换结果本身是合法 JSON,可以接着用 JSON 工具处理。

拖进来的文件编码不对怎么办?

先看有没有 BOM,再按声明里的 encoding 严格解码,失败就依次尝试 UTF-8、GB18030、Big5、Shift_JIS 并统计替换符个数,所以 Excel 或老系统另存的 GBK 文件不会变成满屏问号。页面仍会把三种可疑情况提醒出来:声明与实际字节不符、按声明解码成功但更像 UTF-8(给「按另一种编码重读」按钮)、解出来仍有替换符。文本框里直接粘贴的内容不涉及编码转换。

多大的文件能处理?会不会卡住?

拖进来或打开的文件最大 20 MB,嵌套深度上限 512 层。30 万字符以上的文档自动暂停边输入边校验,状态栏写明「文档较大,已停止自动校验」,点「校验」仍会完整扫一遍。50 万字符以上时动作点下去右侧状态先亮「正在处理…(字符数)」,这一轮跑完前再点别的按钮会被忽略。缩进、属性分行、文本空白、压缩去注释、实时校验、自动换行和当前视图记在浏览器本地,下次打开沿用;输入和输出的内容不会被保存。

有哪些快捷键?

Ctrl + Enter 格式化,Ctrl + Shift + M 压缩,Ctrl + Shift + F 校验,Ctrl + Shift + J 转 JSON,Esc 关掉提示。输入框里选中多行后按 Tab 整块缩进、Shift + Tab 整块反缩进,选区不会被打散。