XML è complicato e analizzarlo in modo nativo è piuttosto difficile, anche con linguaggi di scripting. fortunatamente, c'è un'utilità che può convertire XML in JSON, quello con cui è più facile lavorare, sia negli script che nella riga di comando.
Usa l'utilità xq
Ti consigliamo di utilizzare un'utilità personalizzata per questo, invece di provare ad analizzarlo con qualcosa come regex, che è una cattiva idea. C'è un'utilità chiamata xq
che è perfetto per questo compito. È installato insieme yq
, che funziona per YAML. Puoi installare yq
il pip:
pip install yq
Underhood, questa utility usa jq
per gestire il lavoro con JSON, quindi deve scarica il binario, e spostalo da qualche parte sul tuo ROUTE (/usr/local/bin/
dovrebbe funzionare bene).
Ora, sarai in grado di analizzare l'input XML reindirizzandolo dentro xq
:
gatto xml | perché .
il .
operatore significa che vuoi convertire tutto XML in JSON. In realtà, puoi usare pieno jq
sintassi qui per scegliere i sottoelementi, dove puoi leggere la nostra guida.
Può anche generare xq
La soluzione come XML con il -x
bandiera:
xq -x
Ciò consente di utilizzare jq
selezione della sintassi per l'analisi di XML mantenendolo in formato XML. Anche se non riesci a convertire all'indietro, Che cosa xq
voglio ancora la sintassi XML in formato.
Un roadblock con la conversione di XML in JSON
Da XML a JSON non è una conversione perfetta; in XML, l'ordine degli articoli può essere importante e le chiavi possono essere duplicate. Un documento come:
<e> <un>alcuni</un> <B>testuale</B> <un>contenuto</un> </e>
Darebbe un errore se tradotto direttamente in JSON, perché la a
La chiave esiste due volte. Quindi, diventa una matrice, cosa infrange l'ordine?. xq
restituisce l'output successivo per quel bit di XML:
{ "e": { "un": [ "alcuni", "contenuto" ], "B": "testuale" } }
Che è tecnicamente corretto, ma non è l'ideale in tutte le situazioni. Dovrai ricontrollare e assicurarti che la tua conversione XML sia fluida.