Elm:
Робота з XML

Як це зробити:

В Elm ви працюєте з XML, використовуючи пакет elm/xml. Ось швидкий огляд парсингу 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 ->
        -- Тут щось робимо з розшифрованою книгою
        Debug.toString book

    Err error ->
        -- Обробка помилок
        Debug.toString error

Приклад виводу, за умови відсутності помилок:

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

Поглиблений огляд

XML (eXtensible Markup Language) існує з кінця 90-х, періоду, коли веб був навантажений текстом і потребував структурованого, але гнучкого способу передачі даних. Через свою многослівність та складність XML втратив деяку популярність на користь JSON. Однак XML все ще широко поширений, особливо в корпоративному середовищі або у протоколах, як-от SOAP.

Підхід Elm до XML є функціональним та типобезпечним. Використання пакету elm/xml означає прийняття філософії Elm щодо ясності та надійності. Що стосується парсингу, пакет надає ряд декодерів, які ви компонуєте, щоб обробити структуру XML.

Порівняно з альтернативами, як-от DOMParser в JavaScript або ElementTree в Python, метод Elm може здатися більш многослівним, але забезпечує безпеку. Відсутність помилок виконання через відсутні поля або невідповідності типів; якщо щось не так, ви отримуєте помилку на етапі компіляції.

Функції декодування elm/xml засновані на відображенні XML-вузлів на типи Elm. Ви створюєте декодери, які відображають форму ваших даних, забезпечуючи те, що ваше додаток Elm обробляє XML так само ретельно, як і власні внутрішні структури даних.

Генерація XML в Elm зустрічається рідше, але можлива за допомогою контрчастини elm/xml - Xml.Encode.

Дивіться також