Elm:
Trabalhando com XML

Como Fazer:

No Elm, você lida com XML usando o pacote elm/xml. Aqui está uma rápida olhada na análise de um trecho de 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 ->
        -- Faça algo com o livro decodificado aqui
        Debug.toString book

    Err error ->
        -- Trate erros
        Debug.toString error

Saída de amostra, assumindo que não há erros:

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

Mergulho Profundo

XML (eXtensible Markup Language) existe desde o final dos anos 90, uma época em que a web era cheia de texto e a necessidade de uma forma estruturada, mas flexível de transportar dados era crucial. Devido à verbosidade e complexidade, o XML perdeu algum espaço para o JSON. No entanto, o XML ainda é prevalente, especialmente em ambientes empresariais ou protocolos como SOAP.

A abordagem do Elm ao XML é funcional e segura no tipo. Usar o pacote elm/xml significa abraçar a filosofia Elm de explicitação e confiabilidade. Quando se trata de análise, o pacote fornece uma série de decodificadores que você compõe para lidar com a estrutura do XML.

Comparado a alternativas como o DOMParser do JavaScript ou o ElementTree do Python, o método do Elm pode parecer mais verboso, mas garante segurança. Sem exceções em tempo de execução por falta de campos ou incompatibilidade de tipos; se algo estiver errado, você recebe um erro em tempo de compilação.

As funções de decodificação elm/xml dependem do mapeamento de nós XML para tipos Elm. Você constrói decodificadores que espelham a forma dos seus dados, garantindo que o seu aplicativo Elm manipule o XML com tanto rigor quanto suas próprias estruturas de dados internas.

A geração de XML é menos comum em Elm, mas pode ser alcançada com o contraparte de elm/xml Xml.Encode.

Veja Também