Wie die Konvertierung von XML zu JSON auf der Kommandozeile

0
232
Shutterstock/VectorV

XML ist kompliziert, und analysieren es nativ ist ziemlich schwer, selbst mit scripting-Sprachen. Glücklicherweise gibt es ein Dienstprogramm, das die Konvertierung von XML zu JSON, was ist einfacher, mit zu arbeiten, sowohl in den Skripten und auf den Befehl Linie.

Verwenden Sie die xq-Dienstprogramm

Sie wollen verwenden Sie eine benutzerdefinierte gemacht-Dienstprogramm für diesen, anstatt zu versuchen zu analysieren, es mit so etwas wie regex, das ist eine schlechte Idee. Es gibt ein Dienstprogramm namens xq, das ist perfekt für diese Aufgabe. Es installiert neben yq, die für YAML. Sie installieren können, yq von pip:

pip installieren yq

Unter der Haube dieses Dienstprogramm verwendet jq zu behandeln, die Arbeit mit JSON, so müssen Sie die Binärdatei herunterladen und verschieben Sie Sie irgendwo auf Ihrem PFAD (/usr/local/bin/ sollte funktionieren).

Nun, Sie werden in der Lage sein zu analysieren, XML-input durch Rohrleitungen in xq:

Katze xml | xq .

Die . operator bedeutet, die Sie konvertieren möchten alle XML zu JSON. Sie können tatsächlich verwenden die volle jq syntax zum auswählen der sub-Elemente, die können Sie Lesen Sie unsere Anleitung auf.

Sie können auch output xq-Antwort als XML mit dem -x flag:

xq -x

Diese können Sie verwenden, jq Auswahl syntax, um XML zu Parsen, während es in XML-form. Obwohl es nicht zu sein scheinen in der Lage zu konvertieren in die andere Richtung, als xq will immer noch von der XML-syntax in.

Ein Problem Mit XML zu JSON-Konvertierung

XML zu JSON ist nicht eine perfekte Konvertierung in XML, die Reihenfolge der Elemente kann die Materie, und die Tasten dupliziert werden können. Ein Dokument, wie:

<e>
<a>einige</a>
<b>textliche</b>
<a>Inhalt</a>
</e>

Würde einen Fehler erzeugen, wenn übersetzt geradezu, JSON, weil Sie die a-Taste doppelt vorhanden ist. So, es wird konvertiert in ein array, die nicht brechen die Bestellung. xq gibt die folgende Ausgabe für das bisschen XML:

{
“e”: {
“a”: [
“einige”,
“Inhalt”
],
“b”: “Text”
}
}

Das ist technisch korrekt, nur eben nicht ideal in allen Situationen. Sie wollen zu überprüfen und stellen Sie sicher, dass Ihre XML-Konvertierung hat keine Probleme.