Funciona en tu dispositivo · Tu archivo nunca sale de tu dispositivo.
Suelta un archivo XML con registros repetidos – <records><record>…</record>…</records>, un feed RSS, una exportación de una base de datos – y obtén un CSV con una fila por registro. El documento lo lee el analizador XML del navegador y la lista más larga de elementos repetidos se localiza sola, la envuelva lo que la envuelva – un atributo en el envoltorio, o el título y el enlace del propio feed junto a sus elementos – y la línea del resultado nombra la lista usada.
Cada registro se aplana igual que en la herramienta JSON a CSV: los elementos anidados pasan a columnas separadas por punto (direccion.ciudad), los atributos a columnas con prefijo @ (@id), los elementos internos repetidos con hijos propios reciben columnas numeradas (line.0.sku), los elementos de texto repetidos se unen con punto y coma (a;b), y la fila de cabecera es la unión de todas las columnas encontradas. Los valores se escriben exactamente como los tiene el XML. Los campos con comas, comillas o saltos de línea se entrecomillan según la RFC 4180.
El CSV es UTF-8 con una marca de orden de bytes opcional para Excel, tú eliges el separador y puedes ver las primeras 200 líneas antes de descargar. No se sube nada.
No sirve para: Documentos con varias listas de registros – solo la más larga se convierte en filas; para otra, pásalo a JSON, copia esa lista y conviértela con JSON a CSV.
Las filas son la lista más larga de elementos repetidos en cualquier parte bajo la raíz, la envuelva lo que la envuelva. <records count="2"><record>…</record><record>…</record></records> da una fila por cada <record>, aunque el envoltorio tenga un atributo. Un feed RSS da una fila por cada <item>, con columnas como title, link y pubDate, aunque el title y el link del propio canal estén junto a los elementos. La línea bajo el resultado nombra la lista usada, por ejemplo rss.channel.item.
Los valores que hay junto a esa lista, como el título del propio feed, no forman parte de ningún registro y se dejan fuera. Cuando un documento contiene varias listas de registros, solo la más larga se convierte en filas. Para otra, convierte el archivo con /xml-to-json, copia esa lista desde su [ hasta su ], pégala en /json-to-csv y convierte.
Sin ningún elemento repetido, el único registro es la única fila, y sus columnas son sus propios nombres de campo: <records><record><nombre>Ana</nombre><ciudad>Bogotá</ciudad></record></records> da las columnas nombre y ciudad. Así, un archivo que a veces trae un registro y a veces muchos mantiene la misma cabecera, lo que importa cuando otro programa lee las columnas por su nombre.
Los valores se escriben exactamente como los tiene el XML: 1.50 sigue siendo 1.50, TRUE sigue siendo TRUE, y un elemento que contiene NULL da el texto NULL, mientras que un elemento vacío da una celda vacía. 007 conserva sus ceros y las fechas se quedan como están escritas. Un valor que empieza por =, +, - o @ recibe un apóstrofo delante, como en /json-to-csv, para que una hoja de cálculo no lo ejecute como fórmula.
Los elementos hijos repetidos que solo contienen texto se unen con punto y coma en una celda, así que dos elementos <tag> dan a;b. Los elementos hijos repetidos que tienen hijos propios reciben columnas numeradas, como line.0.sku y line.1.sku. Los prefijos de espacio de nombres se quedan en los nombres de columna, como en soap:Body.price. El texto que está junto a elementos hijos va a una columna #text, sin su posición entre ellos. El archivo se lee en la codificación que declara su primera línea.
Más en Hojas de cálculo y datos
Esta página en otros idiomas: English · العربية · Deutsch · Français · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা