Elm:
Praca z XML

Jak to zrobić:

W Elm zajmujesz się XML za pomocą pakietu elm/xml. Oto szybki sposób na analizę fragmentu XML:

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 ->
        -- Zrób coś z zdekodowaną książką tutaj
        Debug.toString book

    Err error ->
        -- Obsługa błędów
        Debug.toString error

Przykładowe wyjście, zakładając brak błędów:

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

Szczegółowe omówienie

XML (eXtensible Markup Language) istnieje od końca lat 90., kiedy to internet był pełen tekstu, a potrzeba strukturyzowanego, a jednocześnie elastycznego sposobu przenoszenia danych była kluczowa. Ze względu na rozwlekłość i złożoność, XML stracił nieco gruntu na rzecz JSON. Jednakże, XML wciąż jest popularny, szczególnie w środowiskach korporacyjnych lub w protokołach takich jak SOAP.

Podejście Elm do XML jest funkcjonalne i bezpieczne typowo. Korzystanie z pakietu elm/xml oznacza przyjęcie filozofii Elm polegającej na jasności i niezawodności. Jeśli chodzi o analizę, pakiet oferuje szereg dekoderów, które komponujesz, aby obsłużyć strukturę XML.

W porównaniu z alternatywami, takimi jak DOMParser w JavaScript czy ElementTree w Pythonie, metoda Elm może wydawać się bardziej rozwlekła, ale zapewnia bezpieczeństwo. Brak wyjątków czasu wykonania dla brakujących pól lub niedopasowania typów; jeśli coś jest nie tak, otrzymujesz błąd w czasie kompilacji.

Funkcje dekodowania elm/xml opierają się na mapowaniu węzłów XML na typy Elm. Budujesz dekodery, które odzwierciedlają kształt twoich danych, zapewniając, że twoja aplikacja Elm obsługuje XML tak rygorystycznie, jak obsługuje swoje własne wewnętrzne struktury danych.

Generowanie XML w Elm jest mniej powszechne, ale można go osiągnąć za pomocą elm/xml i jego odpowiednika Xml.Encode.

Zobacz także