Cómo convertir XML a JSON en el comando Line

XML es complicado y analizarlo de forma nativa es bastante difícil, incluso con lenguajes de secuencias de comandos. Afortunadamente, hay una utilidad que puede convertir XML a JSON, que es más fácil de usar, tanto en scripts como en la línea de comandos.

Utilice la utilidad xq

Querrá usar una utilidad personalizada para esto, en lugar de intentar analizarlo con algo como expresiones regulares,lo cual es una mala idea. Hay una utilidad llamadaxqque es perfecto para esta tarea. Se instala al ladoyq, que funciona para YAML. puedes instalaryqdepipa:

pip install yq

Debajo del capó, esta utilidad utilizajqpara manejar el trabajo con JSON, por lo que deberádescarga el binario,y muévalo a algún lugar en su RUTA (/usr/local/bin/debería funcionar bien).

Ahora, podrá analizar la entrada XML conectándola axq:

cat xml | xq .

El.operador significa que desea convertir todo el XML a JSON. De hecho, puedes usar todojqsintaxis aquí para seleccionar subelementos, que puedelea nuestra guía sobre.

También puede dar salidaxqla respuesta como XML con el-xbandera:

xq -x

Esto le permite usarjqsintaxis de selección de para analizar XML mientras se mantiene en formato XML. Aunque no parece ser capaz de convertir de otra manera, comoxqtodavía quiere la sintaxis XML.

Un problema con la conversión de XML a JSON

XML a JSON no es una conversión perfecta: en XML, el orden de los elementos puede ser importante y las claves se pueden duplicar. Un documento como:

<e>
  <a>some</a>
  <b>textual</b>
  <a>content</a>
</e>

Produciría un error si se tradujera directamente a JSON, porque elala clave existe dos veces. Entonces, se convierte en una matriz, lo que rompe el orden.xqdevuelve el siguiente resultado para ese bit de XML:

{
  "e": {
    "a": [
      "some",
      "content"
    ],
    "b": "textual"
  }
}

Lo cual es técnicamente correcto, pero no ideal en todas las situaciones. Querrá verificar dos veces y asegurarse de que su conversión XML no tenga problemas.

Actualizaciones del boletín

Ingrese su dirección de correo electrónico a continuación para suscribirse a nuestro boletín