So konvertieren Sie XML in JSON über die Befehlszeile

Inhalt

XML ist kompliziert und nativ zu parsen ist ziemlich schwierig, auch mit Skriptsprachen. Glücklicherweise, Es gibt ein Dienstprogramm, das XML in JSON konvertieren kann, mit dem man leichter arbeiten kann, sowohl in Skripten als auch auf der Kommandozeile.

Verwenden Sie das xq-Dienstprogramm

Sie sollten dafür ein benutzerdefiniertes Dienstprogramm verwenden, anstatt zu versuchen, es mit etwas wie Regex zu analysieren, was eine schlechte idee ist. Es gibt ein Dienstprogramm namens xq das ist perfekt für diese aufgabe. Es wird zusammen installiert yq, das funktioniert für YAML. Sie können installieren yq die pip:

pip installieren yq

Unter der Haube, Dieses Dienstprogramm verwendet jq um die Arbeit mit JSON zu erledigen, also muss es Laden Sie die Binärdatei herunter, und verschiebe es irgendwo auf deiner ROUTE (/usr/local/bin/ sollte gut funktionieren).

Jetzt, Sie können die XML-Eingabe parsen, indem Sie sie in xq:

Katze xml | warum .

das . Operator bedeutet, dass Sie alle XML in JSON konvertieren möchten. Genau genommen, du kannst voll nutzen jq Syntax hier, um Unterelemente auszuwählen, wo Sie unseren Leitfaden lesen können.

Es kann auch erzeugen xqDie Lösung als XML mit dem -x Flagge:

xq -x

Dies ermöglicht Ihnen die Verwendung jqSyntaxauswahl für das Parsen von XML unter Beibehaltung des XML-Formats. Auch wenn Sie anscheinend nicht rückwärts konvertieren können, Was xq wollen immer noch XML-Syntax im Format.

Ein Roadblock beim Konvertieren von XML in JSON

XML zu JSON ist keine perfekte Konvertierung; de XML, die Reihenfolge der Gegenstände kann wichtig sein und die Schlüssel können dupliziert werden. Ein Dokument wie:

<e>
  <ein>etwas</ein>
  <B>textlich</B>
  <ein>Inhalt</ein>
</e>

Es würde einen Fehler auslösen, wenn es direkt in JSON übersetzt würde, weil das a Der Schlüssel existiert zweimal. Dann, wird eine Matrix, was bricht die reihenfolge. xq gibt die nächste Ausgabe für dieses XML-Bit zurück:

{
  "e": {
    "ein": [
      "etwas",
      "Inhalt"
    ],
    "B": "textlich"
  }
}

Was ist technisch richtig, aber nicht in allen Situationen ideal. Sie sollten es noch einmal überprüfen und sicherstellen, dass Ihre XML-Konvertierung reibungslos verläuft.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.