Comment convertir XML en JSON sur la ligne de commande

Contenu

XML est compliqué et son analyse native est assez difficile, même avec les langages de script. Par chance, il existe un utilitaire qui peut convertir XML en JSON, celui avec lequel il est plus facile de travailler, à la fois dans les scripts et sur la ligne de commande.

Utiliser l'utilitaire xq

Vous voudrez utiliser un utilitaire personnalisé pour cela, au lieu d'essayer de l'analyser avec quelque chose comme regex, ce qui est une mauvaise idée. Il existe un utilitaire appelé xq ce qui est parfait pour cette tâche. Il est installé ensemble yq, qui fonctionne pour YAML. Vous pouvez installer yq le pépin:

pip installer yq

Sous le capot, cet utilitaire utilise jq gérer le travail avec JSON, donc il faut télécharger le binaire, et déplacez-le quelque part sur votre ROUTE (/usr/local/bin/ devrait bien fonctionner).

À présent, vous pourrez analyser l'entrée XML en la canalisant dans xq:

chat xml | Pourquoi .

Les . l'opérateur signifie que vous voulez convertir tout XML en JSON. En réalité, vous pouvez utiliser plein jq syntaxe ici pour choisir les sous-éléments, où vous pouvez lire notre guide.

Il peut également générer xqLa solution en XML avec le -x drapeau:

xq -x

Cela vous permet d'utiliser jqsélection de syntaxe pour analyser XML tout en le conservant au format XML. Même si vous n'arrivez pas à convertir à l'envers, Quoi xq veux toujours la syntaxe XML au format.

Un roadblock avec la conversion de XML en JSON

XML en JSON n'est pas une conversion parfaite; fr XML, l'ordre des éléments peut être important et les clés peuvent être dupliquées. Un document comme:

<e>
  <une>certains</une>
  <b>textuel</b>
  <une>teneur</une>
</e>

Cela générerait une erreur s'il était traduit directement en JSON, parce que le a La clé existe deux fois. Ensuite, devient une matrice, ce qui casse l'ordre. xq renvoie la sortie suivante pour ce bit de XML:

{
  "e": {
    "une": [
      "certains",
      "teneur"
    ],
    "b": "textuel"
  }
}

Ce qui est techniquement correct, mais pas idéal dans toutes les situations. Vous voudrez vérifier et vous assurer que votre conversion XML est fluide.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.