TapCub 正式上线:统计、分析、客服一个平台免费用

免费工具 XML 格式化、SQL 格式化与 YAML 校验

把一行写完的 SQL、压缩过的 sitemap.xml、docker-compose 配置贴进来:按统一缩进排好版;格式有问题时,直接告诉你在第几行第几列、解析器期待的是什么。

  • SQL · XML · YAML
  • 出错标出行号
  • 本地处理
格式化工具

格式化并检查

示例是一份挤成一行的网站地图。用按钮加载 SQL、YAML 示例,或贴入自己的内容,结果随输入更新。

粘贴内容或打开本地文件,文件不会上传。

格式正确,下面是格式化结果。

行数

18

格式化结果的行数。

大小(字节)

684

格式化结果按 UTF-8 计算。

元素数

12

所有 XML 元素,含嵌套的。

格式化后的 XML
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>https://www.example.cn/</loc>
    <lastmod>2026-11-10</lastmod>
    <xhtml:link rel="alternate" hreflang="zh-CN" href="https://www.example.cn/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://www.example.cn/en/"/>
  </url>
  <url>
    <loc>https://www.example.cn/pricing?plan=pro&amp;billing=yearly</loc>
    <lastmod>2026-11-02</lastmod>
  </url>
  <!-- 博客文章在 sitemap-blog.xml 里 -->
  <url>
    <loc>https://www.example.cn/blog/utm-guide</loc>
    <lastmod>2026-10-28</lastmod>
  </url>
</urlset>
全部在你的浏览器里计算。这里输入的任何内容都不会上传,TapCub 也不会保存。

版本 v1.0更新于 更新记录

结果怎么看

格式正确、有错,还是正确但有坑

三种格式给的反馈是同一类:结果上方的一句话告诉你属于哪种情况,下方逐条列出。

错误

内容解析不了。XML、YAML 是严格解析器停下的位置;SQL 是没闭合的引号、注释、括号,或者格式化组件读不懂的地方。行列号指向问题所在,或者紧挨在它后面。

注意

内容合法,但以后可能出问题:YAML 里换个解析器就会变类型的值,或者 TapCub SQL 查询会拒绝的写法。每条都说明会发生什么、怎么避免。

说明

除了空白以外改动了什么:YAML 的注释和锚点不会带到结果里,压缩成一行时会去掉注释。

统计数字

结果的行数和字节数,再加一个按格式的计数:XML 元素数、SQL 语句数、YAML 文档数和键数。sitemap 的元素数可以顺手核对网址有没有漏。

XML 和 SQL 是在原文上重新排版,值不会变;YAML 是先解析再重新写出,等价的值可能换一种写法:3.10 变成 3.1,空值写成 null——这正是程序读这个文件时看到的样子。

使用方法

三步完成

不用安装,内容不会离开浏览器。

  1. 1

    选格式

    XML、SQL 或 YAML。SQL 还要选数据库,因为引号和注释规则不一样:MySQL 里 # 开头是注释,SQL Server 里 [name] 是带引号的名称。

  2. 2

    贴入或打开文件

    贴入内容,或打开 .xml、.sql、.yaml 文件。错误和提醒列在统计数字下面,每条带行号。

  3. 3

    复制或下载

    复制格式化结果或下载成文件。需要把 XML、SQL 塞进配置项或接口参数时,选「压缩成一行」。

检查规则

查什么、按什么规则查

每种格式对「合法」的定义不同。有公开规范的按规范,依赖第三方组件的地方写明。

  • XML:按 XML 1.0(第五版)的「格式良好」规则,遇到第一个致命错误就停(符合规范的 XML 解析器都必须这样);不做 DTD / Schema 校验
  • SQL:排版用 sql-formatter 15.9.0;引号、注释、括号按各方言规则单独检查;不核对表名、列名是否存在
  • YAML:用 js-yaml 4.3.2 按 YAML 1.2 解析(重复键、Tab 缩进都报错),再逐行找 YAML 1.1 解析器会读成别的类型的值
各格式的主要检查项和依据
格式检查项依据
XML只有一个根元素;标签成对、嵌套顺序正确XML 1.0 §2.1、§3
XML属性加引号、不重复、值里没有 <XML 1.0 §3.1
XML& 必须是实体或字符引用的开头;预定义实体只有 5 个XML 1.0 §4.1、§4.6
XML注释里没有 --;声明在文件开头XML 1.0 §2.5、§2.8
SQL字符串、带引号的名称、块注释闭合;括号配对各方言的引号规则
SQL · TapCub一条 SELECT / WITH,不能有注释、分号、反引号和写操作,至少用到四张视图之一和 TapCub 洞察「SQL 查询」的服务端检查相同
YAML缩进、重复键、没闭合的引号和括号YAML 1.2.2
YAML未加引号的 yes / no / on / off、0 开头的数字、3.10、22:22YAML 1.1 类型定义(yaml.org/type)
实测例子

同一份 YAML,两种解析器读出两种结果

YAML 示例是一份 docker-compose 配置。它完全合法,但前两行这两个值换个解析器意思就变了,检查结果提醒的就是这类情况;后三行是其它常见的同类写法。

YAML 1.2 和 YAML 1.1 解析器对同一个未加引号的值的读法
写法YAML 1.2(本工具、js-yaml)YAML 1.1(如 PyYAML)稳妥写法
2222:22(端口映射)字符串 "2222:22"数字 133342(六十进制)"2222:22"
GZIP: on字符串 "on"布尔值 true"on"
0755数字 755数字 493(八进制)"0755" 或 0o755
python-version: 3.10数字 3.1数字 3.1"3.10"
NO(挪威的国家代码)字符串 "NO"布尔值 false"NO"

80:80 不受影响:冒号后面的 80 超过 59,不是合法的六十进制写法。Docker 官方文档要求 HOST:CONTAINER 一律写成带引号的字符串,就是为了避开这种只在部分端口上出现的问题。

常见错误

这几类文件为什么解析不了

多数错误来自用一种格式的习惯写另一种格式。

用 HTML 的写法写 XML

属性不加引号、<br> 不自闭合、&nbsp;、只写属性名不写值,在 HTML 里没事,在 XML 里直接报错。请写成 <br/>、&#160;。

sitemap 网址里的 & 没转义

sitemaps.org 协议要求网址里的特殊字符做实体转义,带多个参数的网址在 <loc> 里要写成 &amp;。格式不良好的 sitemap 根本读不了,搜索引擎只会报错,不会读里面的网址。

YAML 的值悄悄变了类型

版本号、邮编、端口映射、no / on 这类词都要加引号。文件照样能解析,要等到某个值以错误的类型被程序读到才出问题。

格式化成功不等于查询正确

查询排版很整齐,列名照样可能写错。SQL 检查只管语法,含义对不对要在数据库里跑一遍才知道。

常见问题

格式化常见问题

还有其他问题?

直接和 TapCub 团队聊聊——工作日通常几小时内回复。

xml格式化怎么做?怎么判断 XML 格式对不对?

选 XML,把内容贴进来就会按层级缩进排版。显示「格式正确」表示符合 XML 1.0 的语法规则:只有一个根元素、标签成对、属性加引号、& 和 < 已转义。按 DTD 或 XSD 校验是另一回事,本工具不做。

sql格式化怎么用?方言选哪个?

选 SQL,方言选查询实际运行的数据库,再贴入语句:关键字统一大写(或小写),每个子句单独一行。各数据库的引号写法不同(MySQL 用 `name`,SQL Server 用 [name],PostgreSQL 用 "name"),选错方言可能解析失败。Doris、TiDB 这类兼容 MySQL 协议的数据库选 MySQL。

为什么 YAML 里的 3.10 变成了 3.1?

不加引号的 3.10 是数字,而数字 3.10 就是 3.1,所有 YAML 解析器都这样,格式化只是让它显形。版本号请写成 "3.10",检查结果会把这类值提前标出来。

格式化后 YAML 的注释怎么没了?

YAML 是先解析成数据再重新写出来的,注释不属于数据,所以不会保留,工具会告诉你去掉了几段。如果只想校验,看检查结果、保留原文即可。

SQL 格式化会检查查询能不能跑吗?

不会。它只检查和数据库无关的语法:引号、注释、括号有没有闭合,格式化组件能不能读懂语句。表和列存不存在、有没有权限,只有数据库能回答。

docker-compose 的端口为什么建议加引号?

YAML 1.1 会把 xx:yy 形式、冒号后面不超过 59 的值当成六十进制数,2222:22 会被读成 133342。Docker 官方文档因此要求端口映射写成带引号的字符串。本工具会标出这类值。

TapCub SQL 方言检查哪些规则?

和 TapCub 洞察「SQL 查询」的服务端检查一致:只能有一条 SELECT 或 WITH;不能有注释、分号、反引号、反斜杠和变量;不能写入或访问系统库;必须用到 v_events、v_sessions、v_persons、v_autocapture 之一;不超过 2 万字符。

内容会上传吗?

不会。格式化和检查都在浏览器里完成,SQL、YAML 的组件从 tapcub.com 下载一次后在本地运行。本工具没有分享链接,贴入的查询和配置不会出现在网址里。

更新记录

更新记录

这个工具的新功能、修复和数据更新,最新的在前。

  1. · v1.0

    首次上线首次上线。

缺功能或发现错误?告诉我们,常被提到的会排进下次更新。 全部工具更新

下一步

用 SQL 查询自己的统计数据

大多数问题内置报表就能回答;回答不了的,洞察专业模式支持直接写 SQL 查询本项目的事件、会话和用户。

看清数据,找到增长。

每一次点击,都有数据依据。装好一行代码,1 分钟看到第一批数据。

无需信用卡 · 统计与客服都有免费版 · 统计无 Cookie