Haskell:
Å jobbe med XML

Hvordan:

Haskell tilbyr biblioteker som xml-conduit for å håndtere XML. Følgende eksempel demonstrerer parsing av en XML-streng og forespørsler av elementer:

{-# LANGUAGE OverloadedStrings #-}

import qualified Data.Text as T
import Text.XML
import Text.XML.Cursor

main :: IO ()
main = do
  let xmlInnhold = "<greetings><hello>World!</hello></greetings>"
  let dokument = parseLBS_ def $ T.encodeUtf8 $ T.pack xmlInnhold
  let markør = fromDocument dokument
  
  let halloTekster = markør $// element "hello" &/ content
  print halloTekster  -- ['World!']

Eksempelutdata:

["World!"]

Dypdykk

XML, forkortelse for eXtensible Markup Language, har lenge vært en grunnstein i dataserialisering langt før JSONs oppstigning. Det er ordrikt, men stivt og standardisert, noe som gjør det passende for strenge bedriftsmiljøer, arvesystemer, og industrier som finans og helsevesen.

Haskell har flere biblioteker for XML; men xml-conduit er blant de kraftigste og mest brukte på grunn av sine effektive streaming- og parsingsegenskaper, del av conduit-familien for håndtering av datastrømmer.

Alternativer inkluderer HXT (Haskell XML Toolbox) som bruker piler for parsing og transformasjon, og tilbyr et annet paradigme for XML-manipulasjoner. Selv om HXT er mindre populært nå på grunn av sin brattere læringskurve, forblir det fortsatt et solid valg for noen brukstilfeller.

Når du implementerer XML-behandling i Haskell, må du bry deg om koding, ettersom Haskell-strenger er Unicode og XML-data kanskje ikke er det. I tillegg kan XML-navnerom legge til ekstra kompleksitet i parsingen.

Se også: