Elm:
Å jobbe med XML

Hvordan:

I Elm, håndterer du XML ved hjelp av elm/xml-pakken. Her er en rask titt på parsing av et XML-utdrag:

import Xml.Decode exposing (..)
import Xml.Decode.Pipeline exposing (..)

xmlString = """
<book id="123">
    <title>Elm in Action</title>
    <author>Robin Heggelund Hansen</author>
</book>
"""

type alias Book =
    { id : String
    , title : String
    , author : String
    }

bookDecoder : Decoder Book
bookDecoder =
    decode Book
        |> required "id" (attribute "id")
        |> required "title" (child "title" (content text))
        |> required "author" (child "author" (content text))

case Xml.Decode.fromString bookDecoder xmlString of
    Ok book ->
        -- Gjør noe med den dekodede boken her
        Debug.toString book

    Err error ->
        -- Håndter feil
        Debug.toString error

Eksempel på utdata, med forutsetning om ingen feil:

"{ id = \"123\", title = \"Elm in Action\", author = \"Robin Heggelund Hansen\" }"

Dypdykk

XML (eXtensible Markup Language) har eksistert siden slutten av 90-tallet, en tid da internett var teksttungt og behovet for en strukturert, men fleksibel måte å bære data på var avgjørende. På grunn av verbositet og kompleksitet, har XML mistet noe terreng til JSON. Men, XML er fremdeles utbredt, spesielt i bedriftsmiljøer eller protokoller som SOAP.

Elms tilnærming til XML er funksjonell og typesikker. Å bruke elm/xml-pakken betyr å omfavne Elms filosofi om eksplisitthet og pålitelighet. Når det kommer til parsing, tilbyr pakken en rekke dekodere som du komponerer for å håndtere XML-strukturen.

Sammenlignet med alternativer som JavaScripts DOMParser eller Pythons ElementTree, kan Elms metode virke mer verbos, men sikrer sikkerhet. Ingen kjøretidsunntak for manglende felt eller typemismatch; hvis noe er galt, får du en kompileringsfeil.

elm/xml-dekoderfunksjonene er avhengig av å kartlegge XML-noder til Elm-typer. Du bygger dekodere som speiler dataens form, og sikrer at Elm-appen din håndterer XML like nøye som den gjør med sine egne interne datastrukturer.

Generering av XML er mindre vanlig i Elm, men kan oppnås med elm/xmls motstykke Xml.Encode.

Se Også