XML格式化
把XML缩进成便于阅读的样子,压缩成一行,或者只做校验。注释、CDATA和属性顺序原样保留。
把文件拖到这里
.xml, .rss, .svg, .xhtml, .txt · 最大100 MB
如何格式化XML
- 1
拖入XML文件
添加一个文档,或者一次最多二十个。每个文件都在当前浏览器标签页里解码、解析并重新输出。
- 2
选择格式化、压缩或校验
格式化按两个空格、四个空格或制表符缩进整棵树。压缩把所有内容合成一行。校验只报告文件的情况,不做任何修改。
- 3
下载重新输出的文件
把结果保存在原文件旁边,批量处理时也可以打包成一个ZIP压缩包下载。
重新缩进,而不是读进来再写出去
把XML读成对象再写回去,是重新缩进最省事的办法,但它会悄悄丢掉所有不是元素的内容:注释、CDATA段、处理指令、属性顺序。这个工具逐个节点遍历文档再重新输出,所以这些内容都会留在原位。文本和属性值完全按原样保留,'还是',不会在你不知情的时候变成撇号。
压缩到底去掉了什么
缩进文件里多出来的字节,是夹在标签之间、只含空白的文本节点,压缩去掉的就是这些。旁边有实际内容的文本不动。比如一段话中间有个加粗的词,内层标签两边的空格属于句子本身,去掉它们会改变文档内容,而不是让文件变小。
错误会指出位置
语法错误会给出行号、列号和那里应有的闭合标签,因为没有位置的错误提示只会让你回去一行行翻。DOCTYPE里的自定义实体声明直接拒绝,不会展开,这样“十亿笑声”(billion laughs)文件就不会让标签页卡死。
文件不会离开你的电脑
解码、解析、重新输出和打包ZIP压缩包,全部在当前浏览器标签页里完成。文件不上传,没有排队,服务器上也不会留下副本。所以带有生产环境主机名或凭据的配置文件只会被你自己的电脑读取,关闭标签页后就不复存在。
常见问题
注释和CDATA段会保留吗?
会,两者都保留,位置不变,文本也不变。处理指令和属性的先后顺序同样保留。如果确实想去掉注释,有单独的开关;去掉XML声明行也有一个开关。
压缩和自己删空白有什么区别?
在整个文件里查找替换,也会删掉文本内容和CDATA里的空格,这会改变文档的意思。这里只删除标签之间只含空白的节点,含有实际文本的元素,空格一个不动。
为什么文件因为声明了实体被拒绝?
含有ENTITY声明的DOCTYPE在解析开始前就会拒绝。“十亿笑声”攻击正是靠展开实体,把几KB变成几GB内存;外部实体也是这样读到不该读的文件。删掉DOCTYPE块,文档其余部分就能正常格式化。
能不能只检查文件,不下载任何东西?
校验模式就是做这个的。它报告文档能否解析、有多少个元素、树有多深、用的是什么编码,不生成任何文件。之后想要整理好的版本,再切换到格式化即可。
支持SVG、RSS和XHTML吗?
支持。这三种都是XML,所以SVG图标、RSS订阅源或XHTML页面都按同样的规则缩进和压缩。扩展名为.docx或.xlsx的Office文档是ZIP容器,不是纯XML,工具会提示你去用对应的工具。
文件大小有限制吗?
每个文件100 MB,一批最多二十个文件。大文档处理得慢,主要是因为整棵树连同注释和节点顺序都要放在内存里,比扁平的对象占用更多。
能读取哪些编码?
编码从文件开头的XML声明里读取。支持UTF-8、UTF-16、windows-1251、windows-1252和ISO-8859-1,所以西里尔文或西欧语言的老文件,字符都能完整读出。
我的XML会上传到别处吗?
不会。所有处理都在你的浏览器本地运行,不经过服务器,关闭标签页后什么也不会保留。