XML es complicado y analizarlo de forma nativa es bastante difícil, inclusive con lenguajes de scripting. Por suerte, existe una utilidad que puede convertir XML a JSON, con la que es más fácil trabajar, tanto en scripts como en la línea de comandos.
Utilice la utilidad xq
Querrá utilizar una utilidad personalizada para esto, en lugar de intentar analizarla con algo como regex, que es una mala idea. Hay una utilidad llamada xq
que es perfecto para esta tarea. Está instalado junto yq
, que funciona para YAML. Puedes instalar yq
de pip:
pip install yq
Bajo el capó, esta utilidad utiliza jq
para manejar el trabajo con JSON, por lo que deberá descargar el binario, y muévelo a algún lugar de tu RUTA (/usr/local/bin/
debería funcionar bien).
Ahora, podrá analizar la entrada XML canalizándola en xq
:
cat xml | xq .
los .
operador significa que desea convertir todo el XML a JSON. En realidad, puedes utilizar full jq
sintaxis aquí para elegir subelementos, en los que puede leer nuestra guía.
Además puede generar xq
La solución como XML con el -x
bandera:
xq -x
Esto te posibilita utilizar jq
de selección de sintaxis para analizar XML mientras se mantiene en formato XML. Aún cuando no parece poder realizar la conversión al revés, como xq
aún quiere sintaxis XML en formato.
Un obstáculo con la conversión de XML a JSON
XML a JSON no es una conversión perfecta; en XML, el orden de los ítems 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 de forma directa a JSON, debido a que el a
La clave existe dos veces. Entonces, se convierte en una matriz, lo que rompe el orden. xq
devuelve la próxima salida 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á volver a verificar y asegurarse de que su conversión XML no tenga problemas.