在你的设备上运行 · 你的文件从不离开你的设备。
拖入一个由重复记录组成的XML文件——<records><record>…</record>…</records>、RSS订阅源、数据库导出——得到一行一条记录的CSV。文档由浏览器的XML解析器读取,然后自动找到最长的那组重复元素,不管外面包着什么——外壳上带属性,或者订阅源自己的标题和链接就在条目旁边——结果那一行会写明用的是哪个列表。
每条记录的展平方式和JSON转CSV工具一样:嵌套元素变成点分隔的列(address.city),属性变成以@开头的列(@id),自身还有子元素的内部重复元素变成带序号的列(line.0.sku),只含文本的重复元素用分号连接(a;b),表头是所有出现过的列的并集。值完全按XML里的样子写出。含逗号、引号或换行的字段按RFC 4180加引号。
CSV是UTF-8,可选加BOM让Excel正确显示中文,分隔符由你选,下载前可以预览前200行。文件不上传。
不适用于: 有好几组记录的文档——只有最长的一组变成行;想要另一组,先转成JSON,复制那个列表,再用JSON转CSV转换。
行是根元素以下任何位置最长的那组重复元素,不管外面包着什么。<records count="2"><record>…</record><record>…</record></records>每个<record>一行,尽管外壳带着属性。RSS订阅源每个<item>一行,列有title、link和pubDate等,尽管频道自己的title和link就在这些item旁边。结果下方那一行会写明用的是哪个列表,比如rss.channel.item。
列表旁边的值,比如订阅源自己的标题,不属于任何一条记录,会被略去。文档里有好几组记录时,只有最长的一组变成行。想要另一组,先用XML转JSON(/xml-to-json)转换文件,把那个列表从它的[复制到],粘贴到JSON转CSV(/json-to-csv)再转换。
没有重复元素时,那一条记录就是唯一的一行,列名就是它自己的字段名:<records><record><name>Ali</name><city>Cairo</city></record></records>得到name和city两列。所以一个有时只有一条记录、有时有很多条的文件,表头保持不变——另一个程序按列名读取时,这一点很重要。
值完全按XML里的样子写出:1.50还是1.50,TRUE还是TRUE,内容为NULL的元素得到文本NULL,而空元素得到空单元格。007保留它的零,日期按原样。以=、+、-或@开头的值前面会加一个撇号,和JSON转CSV(/json-to-csv)一样,这样电子表格不会把它当公式执行。
只含文本的重复子元素在一个单元格里用分号连接,所以两个<tag>元素得到a;b。自身还有子元素的重复子元素得到带编号的列,比如line.0.sku和line.1.sku。命名空间前缀保留在列名里,比如soap:Body.price。和子元素并列的文本放进#text列,不记录它在子元素之间的位置。文件按第一行声明的编码读取。
本页的其他语言版本: English · العربية · Deutsch · Français · Español · Русский · Português · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা