Hoe te Converteren naar XML om de JSON-op de Commando-Regel

0
197
Shutterstock/VectorV

XML is ingewikkeld, en het parseren van het oorspronkelijk is vrij moeilijk, zelfs met scripting talen. Gelukkig, er is een hulpprogramma voor het converteren van XML naar JSON, dat is gemakkelijker om mee te werken, zowel in scripts en op de commando-regel.

Gebruik de xq-Hulpprogramma

Wil je gebruik maken van een op maat gemaakt utility voor deze, in plaats van te proberen om het te ontleden, met iets als regex, dat is een slecht idee. Er is een utility genaamd xq die perfect is voor deze taak. Het is geïnstalleerd naast yq, die werkt voor YAML. U kunt installeren yq van pip:

pip installeren yq

Onder de motorkap van dit hulpprogramma gebruikt jq te hanteren in het werken met JSON, dus je moet het downloaden van de binaire, en verplaats het naar een plek op je PAD (/usr/local/bin/ zou moeten werken).

Nu, je zult in staat zijn om het parseren van XML-invoer door de leidingen in xq:

kat xml | xq .

Het . operator betekent dat je wilt converteren van XML naar JSON. Eigenlijk kunt u gebruik maken van de volledige jq syntaxis hier om sub-elementen, die u kunt lezen is onze gids op.

U kunt ook de uitgang xq ‘ s antwoord in XML met de -x vlag:

xq -x

Dit kunt u gebruik jq selectie-syntaxis parseren van XML-terwijl het in XML-vorm. Hoewel het lijkt niet om te kunnen zetten in de andere richting, als xq wil nog steeds de XML-syntaxis in.

Een Probleem Met XML om de JSON-Conversie

Van XML naar JSON is niet een perfecte conversie—in XML, de volgorde van de elementen kan de materie, en de sleutels kan worden gedupliceerd. Een document zoals:

<e>
<a>wat</a>
<b>tekstuele</b>
<a>deze content</a>
</e>

Zou produceren een fout vertaald als regelrechte te JSON, omdat het een toets bestaat tweemaal. Het is dus omgezet naar een array, dat breekt de bestelling. xq geeft de volgende output voor dat stukje van XML:

{
“e”: {
“a”: [
“wat”,
“de inhoud”
],
“b”: “tekstuele”
}
}

Dat is technisch correct, maar niet ideaal in alle situaties. U zult willen controleren en zorg ervoor dat uw XML-conversie geen problemen heeft.