XML é complicado e analisá-lo nativamente é bastante difícil, mesmo com linguagens de script. Por sorte, existe um utilitário que pode converter XML em JSON, aquele que é mais fácil de trabalhar, tanto em scripts quanto na linha de comando.
Use o utilitário xq
Você vai querer usar um utilitário personalizado para isso, em vez de tentar analisá-lo com algo como regex, o que é uma má ideia. Existe um utilitário chamado xq
o que é perfeito para esta tarefa. É instalado junto yq
, que funciona para YAML. Você pode instalar yq
o pip:
pip install yq
Underhood, este utilitário usa jq
para lidar com o trabalho com JSON, então deve baixe o binário, e mova-o para algum lugar da sua ROTA (/usr/local/bin/
deve funcionar bem).
Agora, você poderá analisar a entrada XML canalizando-a para xq
:
gato xml | porque .
a .
operador significa que você deseja converter todos os XML em JSON. Na realidade, você pode usar completo jq
sintaxe aqui para escolher subelementos, onde você pode ler nosso guia.
Também pode gerar xq
A solução como XML com o -x
bandeira:
xq -x
Isso permite que você use jq
seleção de sintaxe para analisar XML, mantendo-o no formato XML. Mesmo que você não consiga converter para trás, O que xq
ainda deseja a sintaxe XML no formato.
Um roadblock com a conversão de XML em JSON
XML para JSON não é uma conversão perfeita; en XML, a ordem dos itens pode ser importante e as chaves podem ser duplicadas. Um documento como:
<e> <uma>algum</uma> <b>textual</b> <uma>contente</uma> </e>
Ele geraria um erro se traduzido diretamente para JSON, porque o a
A chave existe duas vezes. Então, torna-se uma matriz, o que quebra a ordem. xq
retorna a próxima saída para aquele bit de XML:
{ "e": { "uma": [ "algum", "contente" ], "b": "textual" } }
O que é tecnicamente correto, mas não é ideal em todas as situações. Você vai querer verificar novamente e certificar-se de que sua conversão XML é tranquila.