Fonctionne sur votre appareil · Votre fichier ne quitte jamais votre appareil.
Déposez un fichier XML d’enregistrements répétés – <records><record>…</record>…</records>, un flux RSS, un export de base de données – et obtenez un CSV avec une ligne par enregistrement. Le document est lu par l’analyseur XML du navigateur, puis la plus longue liste d’éléments répétés est trouvée automatiquement, quelle que soit son enveloppe – un attribut sur l’enveloppe, ou le titre et le lien propres à un flux à côté de ses items – et la ligne de résultat nomme la liste utilisée.
Chaque enregistrement est aplati comme dans l’outil JSON en CSV : les éléments imbriqués deviennent des colonnes à points (adresse.ville), les attributs des colonnes préfixées par @ (@id), les éléments intérieurs répétés qui ont leurs propres enfants des colonnes numérotées (line.0.sku), les éléments de texte répétés sont joints par des points-virgules (a;b), et la ligne d’en-tête est l’union de toutes les colonnes trouvées. Les valeurs sont écrites exactement comme dans le XML. Les champs contenant des virgules, des guillemets ou des retours à la ligne sont entourés de guillemets selon la RFC 4180.
Le CSV est en UTF-8 avec un BOM facultatif pour Excel, vous choisissez le séparateur, et vous pouvez voir les 200 premières lignes avant de télécharger. Rien n’est envoyé.
Ne convient pas pour : Les documents contenant plusieurs listes d’enregistrements – seule la plus longue devient les lignes ; pour une autre, convertissez en JSON, copiez cette liste et convertissez-la avec l’outil JSON en CSV.
Les lignes sont la plus longue liste d’éléments répétés située n’importe où sous la racine, quelle que soit son enveloppe. <records count="2"><record>…</record><record>…</record></records> donne une ligne par <record>, même si l’enveloppe porte un attribut. Un flux RSS donne une ligne par <item>, avec des colonnes comme title, link et pubDate, même si le titre et le lien propres au canal se trouvent à côté des items. La ligne sous le résultat nomme la liste utilisée, par exemple rss.channel.item.
Les valeurs posées à côté de cette liste, comme le titre propre au flux, n’appartiennent à aucun enregistrement et sont laissées de côté. Quand un document contient plusieurs listes d’enregistrements, seule la plus longue devient les lignes. Pour en obtenir une autre, convertissez le fichier avec /xml-to-json, copiez cette liste de son [ à son ], collez-la dans /json-to-csv et convertissez.
Sans élément répété, l’enregistrement unique forme la seule ligne, et ses colonnes sont ses propres noms de champs : <records><record><name>Ali</name><city>Lyon</city></record></records> donne les colonnes name et city. Un fichier qui contient tantôt un enregistrement, tantôt plusieurs garde donc le même en-tête, ce qui compte quand un autre programme lit les colonnes par leur nom.
Les valeurs sont écrites exactement comme dans le XML : 1.50 reste 1.50, TRUE reste TRUE, et un élément qui contient NULL donne le texte NULL, tandis qu’un élément vide donne une cellule vide. 007 garde ses zéros, et les dates restent telles qu’elles sont écrites. Une valeur qui commence par =, +, - ou @ reçoit une apostrophe devant, comme sur /json-to-csv, pour qu’un tableur ne l’exécute pas comme une formule.
Les éléments enfants répétés qui ne contiennent que du texte sont joints par des points-virgules dans une même cellule : deux éléments <tag> donnent a;b. Les éléments enfants répétés qui ont eux-mêmes des enfants reçoivent des colonnes numérotées, comme line.0.sku et line.1.sku. Les préfixes d’espaces de noms restent dans les noms de colonnes, comme dans soap:Body.price. Le texte placé à côté d’éléments enfants va dans une colonne #text, sans sa position parmi eux. Le fichier est lu dans l’encodage que déclare sa première ligne.
Cette page dans d’autres langues: English · العربية · Deutsch · Español · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা