Como converter XML para JSON na linha de comando – CloudSavvy IT

15 de julho de 2020 às 01:25
cc4b3268 1

Shutterstock / VetorV

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

CONTINUA DEPOIS DA PUBLICIDADE - OTZADS

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 xqresposta de XML como o -x bandeira:

xq -x

Isso permite que você use jqsintaxe 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.

Mais sobre:
SUGESTÕES PARA VOCÊ