Header Ads

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