Ce que fait cet outil
Il repère l’élément répété et fait de chaque occurrence une ligne.
<commandes>
<commande id="1"><client>Ada</client><total>42</total></commande>
<commande id="2"><client>Alan</client><total>17</total></commande>
</commandes>
client,total,id
Ada,42,1
Alan,17,2
Les enveloppes à clé unique sont traversées : <commandes><commande>… ne demande aucun réglage. Une enveloppe qui porte son propre attribut — <commandes nombre="2"> — l’est aussi : cet attribut décrit la collection, pas une ligne, et ne devient donc pas une colonne. Un attribut posé sur une ligne, si.
Les attributs sont des colonnes
Un identifiant logé dans un attribut est une donnée comme une autre. @_id devient la colonne id.
Le préfixe n’est gardé que dans un seul cas : lorsqu’un élément enfant porte déjà ce nom. <row id="1"><id>x</id></row> donne deux colonnes, id et @_id, parce qu’il s’agit de deux choses différentes et que les fondre en ferait disparaître une. Un réglage supprime tout à fait les attributs si votre tableau ne doit venir que des éléments.
Une ligne est un tableau
Un export d’un seul enregistrement se convertit comme les autres. Cela mérite d’être dit parce que ce n’était pas le cas : XML vers JSON rend un objet plutôt qu’un tableau quand l’élément n’est pas répété, et exiger le tableau refusait un document parfaitement ordinaire.
Un élément racine qui ne contient que du texte reste refusé : une valeur n’est pas un tableau, et faire semblant n’aiderait personne.
Les lignes qui ne se ressemblent pas
L’en-tête est l’union de tout ce qui a été vu, dans l’ordre d’apparition. Une ligne à qui il manque une colonne reçoit une cellule vide :
<r><row><a>1</a></row><row><a>2</a><b>3</b></row></r>
a,b
1,
2,3
Un export irrégulier est normal. Écarter la colonne en trop, ou la ligne qui ne l’a pas, perdrait des données par souci d’ordre.
Ce qu’une cellule ne peut pas contenir
Une cellule porte une valeur. Quand un élément contient un sous-arbre, ce sous-arbre est écrit en JSON dans la cellule plutôt qu’étalé sur des noms de colonnes inventés. C’est laid et c’est honnête : rien n’est perdu, et vous voyez exactement ce qu’il y avait.
Confidentiel par conception
Tout s’exécute localement dans votre navigateur en JavaScript. Vos données ne sont jamais envoyées sur un serveur, ce qui rend l’outil sûr pour des contenus sensibles, et il fonctionne hors ligne.