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 llamadaxq
que es perfecto para esta tarea. Se instala al ladoyq
, que funciona para YAML. puedes instalaryq
depipa:
pip install yq
Debajo del capó, esta utilidad utilizajq
para 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 todojq
sintaxis aquí para seleccionar subelementos, que puedelea nuestra guía sobre.
También puede dar salidaxq
la respuesta como XML con el-x
bandera:
xq -x
Esto le permite usarjq
sintaxis de selección de para analizar XML mientras se mantiene en formato XML. Aunque no parece ser capaz de convertir de otra manera, comoxq
todaví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 ela
la clave existe dos veces. Entonces, se convierte en una matriz, lo que rompe el orden.xq
devuelve 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.