Converter XML para Excel
Transforme um feed XML ou uma exportação de sistema em planilha. O elemento de registro repetido é achado sozinho, e os atributos ganham colunas próprias.
Solte seus arquivos aqui
.xml, .rss, .xhtml, .txt · até 300 MB
Mais configuraçõesMenos configurações
Como Converter para Excel
- 1
Solte um arquivo XML
Feeds, catálogos e exportações de sistemas são lidos localmente. RSS, XML simples e XHTML são aceitos.
- 2
Confirme o elemento de registro detectado
O caminho que mais se repete vira a linha. Troque esse caminho se o seu arquivo guarda os registros em um lugar incomum.
- 3
Converta e baixe o XLSX
Você recebe uma planilha com uma linha por registro e o cabeçalho congelado, pronta para filtrar e classificar.
Como descobrir o que conta como linha
O XML não tem noção de tabela, então a primeira pergunta de verdade é qual elemento é um registro. A árvore do documento é percorrida e, para cada nó, conta-se quantos filhos têm o mesmo nome. O caminho com mais repetições vence, e o empate fica com o caminho mais profundo, porque mais profundo é mais específico: rss.channel.item é uma resposta mais útil que rss.channel. Essa heurística acerta em feeds e catálogos quase sempre, mas é só uma heurística, por isso o caminho é um campo editável, e não uma decisão escondida. Uma exportação do 1C em que tanto Document quanto TableRow se repetem é exatamente o caso em que só você sabe qual dos dois queria.
Atributos, namespaces e aninhamento
Um atributo carrega dados tanto quanto um elemento, então id="7" vira uma coluna chamada @id, e um currency="EUR" aninhado vira sum.@currency. Você pode mudar o prefixo ou descartar os atributos por completo. Os prefixos de namespace são removidos por padrão, para que dc:title caia em uma coluna chamada title, que é o que quase todo mundo quer ao abrir a planilha; desative essa opção, e o nome com prefixo é mantido. Os elementos aninhados viram colunas com nomes separados por ponto até a profundidade que você permitir, e o que ficar mais fundo é guardado como JSON compacto, em vez de esticar a planilha para os lados.
Declarações de entidades são recusadas, não expandidas
Um arquivo XML pode declarar as próprias entidades dentro de um DOCTYPE, e é expandindo essas entidades que o ataque billion laughs esgota a memória e que o XXE lê arquivos de um servidor. Não existe jeito seguro de expandir uma entidade não confiável nem motivo bom para tentar isso em uma conversão para planilha. Por isso, um documento com uma declaração ENTITY é rejeitado antes de a análise começar, com uma mensagem que diz exatamente o motivo. Remova o DOCTYPE, e o resto do arquivo é convertido normalmente.
Analisado aqui, não em um servidor
Decodificação, validação e conversão acontecem dentro desta aba do navegador, com um analisador escrito para essa finalidade. Nada é enviado e, como as entidades externas não são expandidas, nenhuma parte do arquivo consegue se conectar a lugar nenhum.
Perguntas frequentes
Como o elemento que se repete é escolhido?
Contando os irmãos com o mesmo nome no documento inteiro e pegando o caminho com mais deles; no empate, fica o caminho mais profundo. O caminho escolhido aparece na tela e pode ser trocado por qualquer caminho que você digitar.
Para onde vão os atributos?
Para colunas próprias, com o prefixo @ por padrão: @id para um atributo do registro e sum.@currency para um atributo de um elemento aninhado. Você pode mudar o prefixo ou ignorar os atributos por completo.
O que acontece com os elementos aninhados?
Eles viram colunas com nomes separados por ponto, como order.customer.city, até o limite de profundidade que você definir. O que ficar mais fundo é gravado como uma string JSON compacta em uma única célula, em vez de se abrir em mais colunas.
E os namespaces?
Prefixos como dc: são removidos por padrão, então dc:title vira uma coluna chamada title. Se dois namespaces usam de fato o mesmo nome local no seu arquivo, desative a remoção para mantê-los separados.
Funciona com RSS?
Sim, e é o caso que a detecção resolve melhor: rss.channel.item é encontrado automaticamente, com uma linha por item do feed e title, link e pubDate como colunas.
Qual é o limite de linhas?
1.048.576 linhas, que é um limite do próprio formato XLSX. Um feed maior é recusado com um link para a ferramenta XML para CSV, que não tem esse teto.
Meu arquivo é enviado?
Não. O arquivo é decodificado, analisado e convertido dentro do seu navegador, e as entidades declaradas são recusadas logo de cara em vez de expandidas, então nada no documento consegue disparar uma requisição de rede.