Haskell:
XML:n käsittely
Kuinka:
Haskell tarjoaa kirjastoja kuten xml-conduit
XML:n käsittelyyn. Seuraava esimerkki demonstroi XML-merkkijonon jäsentämisen ja elementtien kyselyn:
{-# LANGUAGE OverloadedStrings #-}
import qualified Data.Text as T
import Text.XML
import Text.XML.Cursor
main :: IO ()
main = do
let xmlContent = "<greetings><hello>World!</hello></greetings>"
let document = parseLBS_ def $ T.encodeUtf8 $ T.pack xmlContent
let cursor = fromDocument document
let helloTexts = cursor $// element "hello" &/ content
print helloTexts -- ['World!']
Esimerkkituloste:
["World!"]
Syväsukellus
XML, lyhenne sanoista eXtensible Markup Language, on ollut tietojen sarjallistamisen kulmakivi kauan ennen JSONin nousua. Se on verbosinen, mutta jäykkä ja standardoitu, mikä tekee siitä sopivan tiukkoihin yritysympäristöihin, legacy-järjestelmiin ja teollisuudenaloihin kuten rahoitus ja terveydenhuolto.
Haskellissa on useita XML-kirjastoja; kuitenkin xml-conduit
on yksi tehokkaimmista ja laajalti käytetyistä sen tehokkaan suoratoiston ja jäsentämiskyvyn vuoksi, osana conduit
perhettä datavirtojen käsittelyyn.
Vaihtoehtoihin kuuluu HXT
(Haskell XML Toolbox), joka käyttää nuolia jäsentämiseen ja muunnoksiin, tarjoten erilaisen paradigman XML-manipulaatioihin. Vaikka HXT
on nykyään vähemmän suosittu sen jyrkemmän oppimiskäyrän vuoksi, se pysyy silti vankkana valintana joissakin käyttötapauksissa.
Toteuttaessasi XML-käsittelyä Haskellissa, sinun tulee huolehtia merkistökoodauksesta, koska Haskellin merkkijonot ovat Unicodea ja XML-data ei välttämättä ole. Lisäksi, XML-nimiavaruudet voivat lisätä ylimääräistä monimutkaisuutta jäsentämiseen.
Katso myös:
xml-conduit
paketin dokumentaatio: https://hackage.haskell.org/package/xml-conduit- Haskell XML Toolkit (HXT): http://hackage.haskell.org/package/hxt
- “Real World Haskell” kirja, Luku 16, XML-käsittelystä: http://book.realworldhaskell.org/read/xml.html
- Haskell Wiki XML:stä: https://wiki.haskell.org/XML