O que esta ferramenta faz
Ela encontra o elemento repetido e faz de cada ocorrência uma linha.
<pedidos>
<pedido id="1"><cliente>Ada</cliente><total>42</total></pedido>
<pedido id="2"><cliente>Alan</cliente><total>17</total></pedido>
</pedidos>
cliente,total,id
Ada,42,1
Alan,17,2
Invólucros de chave única são atravessados: <pedidos><pedido>… não precisa de configuração. Um invólucro com atributo próprio — <pedidos total="2"> — também: esse atributo descreve a coleção, não uma linha, e por isso não vira coluna. Um atributo posto numa linha, sim.
Os atributos são colunas
Um identificador guardado num atributo é dado como qualquer outro. @_id vira a coluna id.
O prefixo é mantido num único caso: quando um elemento filho já tem esse nome. <row id="1"><id>x</id></row> dá duas colunas, id e @_id, porque são duas coisas diferentes e fundi-las faria uma delas sumir. Uma opção descarta os atributos por completo se a sua tabela deve vir só dos elementos.
Uma linha é uma tabela
Um export de um único registro converte como qualquer outro. Vale dizer porque antes não era assim: XML para JSON devolve um objeto e não um array quando o elemento não se repete, e exigir o array rejeitava um documento perfeitamente comum.
Um elemento raiz que só contém texto continua sendo recusado: um valor não é uma tabela, e fingir o contrário não ajudaria ninguém.
As linhas que não se parecem
O cabeçalho é a união de tudo o que foi visto, na ordem de aparição. A linha à qual falta uma coluna recebe célula vazia:
<r><row><a>1</a></row><row><a>2</a><b>3</b></row></r>
a,b
1,
2,3
Um export irregular é normal. Descartar a coluna a mais, ou a linha que não a tem, perderia dados por gosto de arrumação.
O que uma célula não pode conter
Uma célula carrega um valor. Quando um elemento contém uma subárvore, essa subárvore é escrita como JSON dentro da célula em vez de espalhada por nomes de coluna inventados. É feio e é honesto: nada se perde, e você vê exatamente o que havia.
Privado por padrão
Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.