Como converter XML em JSON na linha de comando
Shutterstock / VectorV
XML é complicado e analisá-lo nativamente é bastante difícil, mesmo com linguagens de script. Felizmente, há um utilitário que pode converter XML em JSON, que é 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á ideia. Existe um utilitário chamado xq que é perfeito para essa tarefa. Ele é instalado junto com yq, que funciona para YAML. Você pode instalar o yq do pip:
instalação pip yq
Nos bastidores, este utilitário usa jq para trabalhar com JSON, então você precisará baixar o binário e movê-lo para algum lugar em seu PATH (/ usr / local / bin / deve funcionar bem).
Agora, você poderá analisar a entrada XML canalizando-a para xq:
cat xml | xq.
O. operador significa que você deseja converter todo o XML em JSON. Na verdade, você pode usar a sintaxe jq completa aqui para selecionar subelementos, sobre os quais pode ler nosso guia.
Publicidade
Você também pode gerar a resposta de xq & # 8216; s como XML com o sinalizador -x:
xq -x
Isso permite que você use a sintaxe de seleção da jq & # 8216; para analisar XML, mantendo-o no formato XML. Embora não pareça ser capaz de converter de outra maneira, já que xq ainda quer 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 ser importante e as chaves podem ser duplicadas. Um documento como:
< e > < a > alguns < / a > < b > textual < / b > < a > conteúdo < / a > < / e >
Produziria um erro se traduzido totalmente para JSON, porque a chave existe duas vezes. Portanto, ele é convertido em uma matriz, o que quebra a ordem. xq retorna a seguinte saída para esse bit de XML:
{"e": {"a": ["algum", "conteúdo"], "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 não tenha problemas.
Nenhum comentário