XML 格式化

XML 在线格式化与校验

粘贴 XML 即可缩进美化、压缩成一行,或检查格式是否正确。有错误时会显示第一个错误的行号和列号,在原文里标出位置,并说明怎么改。文本内容一个字都不会改动,XML 也不会离开你的浏览器。

输出
缩进
  • 格式化后的 XML

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.shop.mapper.OrderMapper"> <!-- 按用户查询一段时间内的订单 --> <select id="listByUser" resultType="com.example.shop.entity.Order">SELECT id, order_no, amount FROM t_order WHERE user_id = #{userId} AND created_at <![CDATA[ <= ]]> #{until}</select> <update id="markPaid">UPDATE t_order SET status = 'PAID' WHERE order_no = #{orderNo}</update> </mapper>

结果格式正确的 XML
元素数3
嵌套层数2
属性数4
命名空间声明数0
处理前大小(字节)535
处理后大小(字节)547
大小变化2.24%
行数7

只改动了标签之间的空白;文本、属性值、CDATA 和注释都按原样保留。

全部在你的设备上计算 · 公式已用已知数值验证 · 了解我们如何验证

XML 格式化工具怎么用

  1. 把 XML 粘贴到输入框——MyBatis 映射文件、Maven 的 pom.xml、Spring 配置、Android 布局、微信支付的接口报文、SOAP 请求、RSS 或网站地图都可以。粘贴后立即校验并格式化。
  2. 选格式化让每个元素单独一行,用 2 个空格、4 个空格或制表符缩进;选压缩则去掉标签之间的空白。
  3. 点击结果旁的复制,或点下载保存为文件。
  4. 如果 XML 格式不正确,会显示问题、行号和列号,把出错的那一行列出来并在下面用 ^ 标出位置,再告诉你怎么改。改好后,格式化结果立刻出现。

会改动什么,不会改动什么

XML 文档是一棵元素树。格式化把每个子元素、注释和处理指令放到单独一行,按嵌套层数缩进;压缩则去掉这些换行和缩进。只有内容全是子元素的元素才会这样处理,因为只有在那里,标签之间的空白才没有意义。其他内容逐字复制:

Windows 换行(CR LF)会写成 LF,所有 XML 解析器本来就是这样读取的。中文内容按原样保留,不会转成 &#x…; 编码。

什么叫“格式正确”

每个 XML 文件都必须遵守 XML 1.0 和 XML 命名空间的语法规则,否则任何程序都读不了它。校验器会报告找到的第一条违反的规则:只有一个包含全部内容的根元素;每个开始标签都有对应的结束标签,顺序正确、大小写一致;属性值加引号,同一标签里没有重复属性;文本里的 & 和 < 要写成 &amp; 和 &lt;;除非 DOCTYPE 另有声明,只能使用五个预定义实体;dc: 这样的命名空间前缀必须用 xmlns:dc="…" 声明;如果有 <?xml … ?> 声明,它必须是文件最开头的字符。

MyBatis 里的 < 和 CDATA

国内 Java 项目里最常遇到的 XML 错误,是在 MyBatis 映射文件的 SQL 里直接写小于号:

<select id="cheap">
  SELECT * FROM t_goods WHERE price < 100
</select>

校验结果是 未转义的 <,位置在第 2 行、第 37 列:

  SELECT * FROM t_goods WHERE price < 100
                                    ^

XML 解析器把 < 当成一个标签的开始,而 < 100 不是合法的标签。有两种改法:写成 price &lt; 100,或者用 CDATA 包起来:price <![CDATA[ < ]]> 100。> 在文本里其实是允许的,但很多团队为了统一也写成 &gt;。属性里同理,<if test="amount < 100"> 也要写成 &lt;。另一个常见错误是 SQL 或网址里的 &,例如 JDBC 连接串 ?useSSL=false&serverTimezone=Asia/Shanghai 写进 XML 配置时,& 必须写成 &amp;。

格式正确不等于有效。有效性检查要对照 XSD 或 DTD 这样的模式,看哪些元素和值是允许的。本页只检查语法,不加载 DTD 或模式文件。

计算示例

输入框里的示例是一个 535 字节、写在一行里的 MyBatis 映射文件,带有 DOCTYPE、注释和 CDATA。按 2 个空格格式化后:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.shop.mapper.OrderMapper">
  <!-- 按用户查询一段时间内的订单 -->
  <select id="listByUser" resultType="com.example.shop.entity.Order">SELECT id, order_no, amount FROM t_order WHERE user_id = #{userId} AND created_at <![CDATA[ <= ]]> #{until}</select>
  <update id="markPaid">UPDATE t_order SET status = 'PAID' WHERE order_no = #{orderNo}</update>
</mapper>

3 个元素嵌套了 2 层。<select> 和 <update> 里是 SQL 文本(其中还有 CDATA),属于混合内容,所以保持在一行,SQL 一个字符都不变。注意每个汉字在 UTF-8 里占 3 字节,缩进让文件增加了 12 字节;再压缩又回到 535 字节。

微信支付和其他接口报文

微信支付 API v2 的请求和返回都是 XML(v3 已改用 JSON),字段值常用 CDATA 包裹。把一行的返回报文格式化后,排查起来清楚得多:

<xml>
  <return_code><![CDATA[SUCCESS]]></return_code>
  <return_msg><![CDATA[OK]]></return_msg>
  <appid><![CDATA[wx2421b1c4370ec43b]]></appid>
  <nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str>
  <result_code><![CDATA[SUCCESS]]></result_code>
  <trade_type><![CDATA[JSAPI]]></trade_type>
</xml>

需要注意:带签名的报文(微信支付的 sign、SAML 断言、SOAP 的 WS-Security、电子发票的数字签名)签的是原始文本,格式化或压缩后的副本可能与签名对不上。格式化只用来阅读和找错,发送和存档请用原文件。

限制与小技巧

XML 不会离开你的设备

解析、校验和格式化都在浏览器里完成。配置文件和接口报文里经常有数据库密码、商户号和 API 密钥,这些内容都不会被上传或记录,也不会被保存:刷新页面就会清空。

常见问题

我的 XML 会被上传到服务器吗?

不会。格式化工具是在你浏览器里运行的 JavaScript,文件不会离开你的设备;页面加载后断网也能使用。

“格式正确”和“有效”有什么区别?

格式正确的 XML 遵守所有 XML 解析器都会检查的语法:标签正确闭合和嵌套、属性值加引号、特殊字符转义、只有一个根元素。有效的 XML 在此基础上还符合某个 XSD 或 DTD 模式。本页检查的是格式是否正确。

为什么提示“未转义的 &”?

XML 里的 & 用来开始 &amp;、&#20013; 这样的引用。公司名、商品描述或带多个参数的网址里出现的单独 &,必须写成 &amp;。

MyBatis 里的小于号怎么写?

写成 &lt;,或者用 <![CDATA[ < ]]> 包起来。直接写 < 会让解析器以为是一个新标签的开始,本页会报“未转义的 <”并指出位置。

为什么有些元素格式化后还在一行?

含有文本的元素——无论只有文字还是文字和标签混在一起——都按原样复制,因为在里面加换行或空格会改变文本。只有内容全是子元素、注释和处理指令的元素才会展开成多行。

把这个计算器嵌入你的网站

可免费用于你的网站或博客。把下面的代码粘贴到想显示计算器的位置即可。

最后更新:2026年10月16日

菜单

分类

理财与贷款计算器15款计算器商业与购物计算器5款计算器健康与减重计算器6款计算器数学与学习计算器7款计算器日期与时间计算器5款计算器节日与重要日子倒计时8款计算器生活实用工具7款计算器程序员在线开发工具9款计算器

CalcWorthy

关于我们联系我们隐私政策使用条款

语言

语言
简体中文Simplified ChineseEnglishEnglishالعربيةArabicবাংলাBanglaDeutschGermanEspañolSpanishفارسیPersianFrançaisFrenchעבריתHebrewहिन्दीHindiBahasa IndonesiaIndonesianItalianoItalian日本語Japanese한국어KoreanBahasa MelayuMalayNederlandsDutchPolskiPolishPortuguêsPortugueseРусскийRussianไทยThaiTürkçeTurkishУкраїнськаUkrainianاردوUrduTiếng ViệtVietnamese