Come convertire XML in JSON sulla riga di comando

Contenuti

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 xqLa soluzione come XML con il -x bandiera:

xq -x

Ciò consente di utilizzare jqselezione 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.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.