jsonecho

XML to Elm

Plak een XML-document en krijg Elm-types die bij de structuur passen.

De tool wordt geladen...

Zo gebruik je XML to Elm

  1. Plak een representatief XML-voorbeeld, bij voorkeur een met alle optionele velden ingevuld.
  2. Stel de naam van het roottype in en bepaal of je ook hulpcode wilt of alleen types.
  3. Kopieer de gegenereerde Elm-code naar je project.

Over XML to Elm

Modelklassen met de hand schrijven voor een grote XML-payload is saai en daar sluipen typefouten in. Plak hier een voorbeeld en de generator leidt de structuur af: welke velden er zijn, welke objecten zijn, welke arrays en welk type elke waarde heeft. De uitvoer bestaat uit typealiassen met bijpassende JSON-decoders en -encoders.

XML wordt eerst op dezelfde manier naar JSON geconverteerd als in onze XML to JSON-tool: attributen krijgen een @_-voorvoegsel en tekstinhoud naast attributen heet #text. De Elm-types worden uit dat resultaat gegenereerd. Elm heeft geen runtime-reflectie, dus de decoders worden voor je gegenereerd en dat is het nuttigste deel van de uitvoer.

De gegenereerde code gebruiken

Gebruik Json.Decode.decodeString rootDecoder text en verwerk het Result, dat je vertelt wat er misging als de gegevens niet overeenkomen.

Optionele waarden gebruiken het Maybe-type en de decoder accepteert null en ontbrekende sleutels.

Veelgestelde vragen

Waarvan hangt de gegenereerde Elm-code af?

De uitvoer bestaat uit typealiassen met bijpassende JSON-decoders en -encoders.

Hoe parseer ik XML met het resultaat?

Converteer de XML eerst naar JSON (onze XML to JSON-tool doet dat op dezelfde manier) en gebruik dan Json.Decode.decodeString rootDecoder text en verwerk het Result, dat je vertelt wat er misging als de gegevens niet overeenkomen.

Hoe worden optionele en ontbrekende velden behandeld?

Optionele waarden gebruiken het Maybe-type en de decoder accepteert null en ontbrekende sleutels.

Kijkt de generator naar meer dan één record?

Hij kent alleen wat in je voorbeeld staat. Ontbreekt een veld in je voorbeeld, dan verschijnt het niet in de types, en is een waarde in je voorbeeld null, dan is het type onbekend. Plak een voorbeeld waarin zoveel mogelijk velden zijn ingevuld, of plak een array met meerdere verschillende records.

Wordt mijn XML naar een server gestuurd?

Nee. De generator wordt de eerste keer dat je hem gebruikt naar je browser gedownload, ongeveer 1 MB, en alles draait lokaal.

Meer in Data naar klasse

Alle tools →