Elm:
XML:n käsittely
Kuinka:
Elm:ssä käsittelet XML:ää käyttämällä elm/xml
-pakettia. Tässä pikakatsaus XML-katkelman jäsentämiseen:
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 ->
-- Tee jotain jäsentämäsi kirjan kanssa täällä
Debug.toString book
Err error ->
-- Käsittele virheet
Debug.toString error
Näyte tulosteesta, olettaen että ei virheitä:
"{ id = \"123\", title = \"Elm in Action\", author = \"Robin Heggelund Hansen\" }"
Syväsukellus
XML (laajennettavissa oleva merkkauskieli) on ollut olemassa 90-luvun lopulta lähtien, aikana, jolloin web oli tekstitiheä ja tarve rakenteelliselle, mutta joustavalle datan kantamisen tavalle oli kriittinen. Verbositeetin ja monimutkaisuuden vuoksi XML on menettänyt hieman maata JSON:lle. XML on kuitenkin edelleen vallitseva, erityisesti yritysympäristöissä tai protokollissa kuten SOAP.
Elm:n lähestyminen XML:ään on toiminnallinen ja tyyppiturvallinen. elm/xml
-paketin käyttäminen tarkoittaa Elm:n filosofian omaksumista; erityisesti selkeyden ja luotettavuuden. Jäsentämisen osalta paketti tarjoaa joukon dekoodereita, joita voit yhdistellä käsittelemään XML-rakennetta.
Verrattuna vaihtoehtoihin, kuten JavaScriptin DOMParser tai Pythonin ElementTree, Elm:n menetelmä saattaa vaikuttaa verbosilta, mutta se takaa turvallisuuden. Ei ajonaikaisia poikkeuksia puuttuvista kentistä tai tyyppivirheistä; jos jokin on vialla, saat käännösaikaisen virheen.
elm/xml
paketin dekoodausfunktiot perustuvat XML-noodien kartoittamiseen Elm-tyypeiksi. Rakennat dekoodereita, jotka peilaavat datasi muotoa, varmistaen, että Elm-sovelluksesi käsittelee XML:ää yhtä perusteellisesti kuin omia sisäisiä data-rakenteitaan.
XML:n tuottaminen Elm:ssä on vähemmän yleistä, mutta se on mahdollista elm/xml
paketin vastapuolen Xml.Encode
avulla.
Katso Myös
- Elm-oppaan JSON, joka pätee myös XML-ajattelutapaan: https://guide.elm-lang.org/interop/json.html
- XML-standardi W3C:ltä XML:n syvemmän ymmärtämisen saavuttamiseksi: https://www.w3.org/XML/