XML é complicado, e analisá-lo nativamente é bastante difícil, mesmo com linguagens de script. Felizmente, existe um utilitário que pode converter XML em JSON, mais fácil de trabalhar, tanto em scripts quanto na linha de comando.
Use o utilitário xq
Você desejará usar um utilitário personalizado para isso, em vez de tentar analisá-lo com algo como regex, o que é uma má idéia. Existe um utilitário chamado xq
isso é perfeito para esta tarefa. Está instalado ao lado yq
, que funciona para YAML. Você pode instalar yq
do pip:
pip install yq
Sob o capô, esse utilitário usa jq
para lidar com o trabalho com JSON, você precisará fazer o download do binário e movê-lo para algum lugar no seu PATH (/usr/local/bin/
deve funcionar bem).
Agora, você poderá analisar a entrada XML inserindo-a no xq
:
cat xml | xq .
o .
operador significa que você deseja converter todo o XML em JSON. Você pode realmente usar jq
aqui para selecionar subelementos, nos quais você pode ler nosso guia.
Você também pode imprimir xq
resposta de XML como o -x
bandeira:
xq -x
Isso permite que você use jq
sintaxe de seleção para analisar XML, mantendo-o no formato XML. Embora não pareça capaz de converter para o outro lado, como xq
ainda deseja a sintaxe XML.
Um problema com a conversão de XML em JSON
XML para JSON não é uma conversão perfeita – em XML, a ordem dos elementos pode importar e as chaves podem ser duplicadas. Um documento como:
some textual content
Produziria um erro se traduzido diretamente para JSON, porque o a
chave existe duas vezes. Então, é convertido em uma matriz, que quebra a ordem. xq
retorna a seguinte saída para esse bit de XML:
{ "e": { "a": [ "some", "content" ], "b": "textual" } }
O que é tecnicamente correto, mas não ideal em todas as situações. Você deseja verificar novamente e garantir que sua conversão XML não tenha problemas.