Haskell:
Att arbeta med XML

Hur man gör:

Haskell erbjuder bibliotek som xml-conduit för att hantera XML. Följande exempel demonstrerar tolkning av en XML-sträng och sökning efter element:

{-# 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!']

Exempel på utskrift:

["World!"]

Fördjupning

XML, förkortning för eXtensible Markup Language, har varit en grundpelare i data-serialisering långt innan JSON:s framfart. Det är utförligt, men strängt och standardiserat, vilket gör det lämpligt för strikta företagsmiljöer, äldre system och industrier som finans och sjukvård.

Haskell har flera bibliotek för XML; dock är xml-conduit bland de mest kraftfulla och mest använda tack vare dess effektiva streaming- och tolkningsförmåga, som en del av conduit-familjen för hantering av dataströmmar.

Alternativ inkluderar HXT (Haskell XML Toolbox) som använder pilar för tolkning och transformation, vilket erbjuder ett annat paradigm för XML-manipulationer. Även om HXT är mindre populärt nu på grund av dess brantare inlärningskurva, kvarstår det fortfarande som ett solitt val för vissa användningsfall.

När du implementerar XML-bearbetning i Haskell, måste du vara uppmärksam på kodning, eftersom Haskell-strängar är Unicode och XML-data kanske inte är det. Dessutom kan XML-namnrymder lägga till extra komplexitet i tolkningen.

Se även: