Hur Konvertera XML till JSON på kommandoraden

0
198
Shutterstock/VectorV

XML är komplicerat och analysera den naturligt är ganska svårt, även med skriptspråk. Lyckligtvis finns det ett verktyg som kan konvertera XML till JSON, som är lättare att arbeta med, både i manus och på kommandoraden.

Använd xq Utility

Du vill använda en custom made verktyg för detta, snarare än att försöka tolka det med något som liknar regex, vilket är en dålig idé. Det finns ett verktyg som heter xq som är perfekt för denna uppgift. Det är installerade tillsammans med yq, som arbetar för YAML. Du kan installera yq från pip:

pips installera yq

Under huven, kan det här verktyget använder jq att hantera arbeta med JSON, så du måste ladda ner den binära, och flytta det till någonstans i din SÖKVÄG (/usr/local/bin/ bör fungera bra).

Nu, kommer du att kunna tolka XML-ingång genom rör i det i xq:

katt xml | xq .

Den . operatör betyder det att du vill konvertera alla XML till JSON. Du kan faktiskt använda full jq syntax här för att välja sub-element, som du kan läsa vår guide om.

Du kan också skicka xq ‘ s svar som XML-med -x-flaggan:

xq -x

Detta kan du använda jq utbud syntax för att tolka XML-medan du håller den i XML-form. Även om det inte verkar kunna konvertera den andra vägen, som xq vill fortfarande XML-syntax.

Ett Problem Med XML till JSON-Konvertering

XML till JSON är inte en perfekt konvertering—i XML, ordningen på elementen kan fråga, och nycklar kan kopieras. Ett dokument som:

<e>
<a>lite</a>
<b>text</b>
<a>innehåll</a>
</e>

Skulle ge ett fel om översättas direkt till JSON, eftersom en nyckel finns två gånger. Så, det är konverteras till en array, som bryter ordningen. xq ger följande resultat för att lite av XML:

{
“e”: {
“en”: [
“vissa”,
“innehåll”
],
“b”: “text”
}
}

Som är tekniskt korrekt, är bara inte perfekt i alla situationer. Du vill dubbelkolla och se till att din XML-omvandling har några frågor.