Haskell:
Lavorare con XML

Come fare:

Haskell offre librerie come xml-conduit per gestire XML. Il seguente esempio dimostra il parsing di una stringa XML e l’interrogazione degli elementi:

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

Output dell’esempio:

["World!"]

Approfondimento

XML, abbreviazione di eXtensible Markup Language, è stato un pilastro nella serializzazione dei dati molto prima dell’ascesa di JSON. È verboso, ma rigido e standardizzato, rendendolo adatto per ambienti aziendali severi, sistemi legacy e settori come la finanza e la sanità.

Haskell ha diverse librerie per XML; tuttavia, xml-conduit è tra le più potenti e utilizzate grazie alle sue efficienti capacità di streaming e parsing, parte della famiglia conduit per la gestione dei flussi di dati.

Le alternative includono HXT (Haskell XML Toolbox) che utilizza le frecce per il parsing e la trasformazione, fornendo un diverso paradigma per le manipolazioni XML. Anche se HXT è meno popolare ora a causa della sua curva di apprendimento più ripida, rimane comunque una scelta solida per alcuni casi d’uso.

Quando si implementa l’elaborazione XML in Haskell, bisogna prestare attenzione alla codifica, poiché le stringhe Haskell sono in Unicode e i dati XML potrebbero non esserlo. Inoltre, gli spazi dei nomi XML possono aggiungere ulteriore complessità al parsing.

Vedi Anche: