Haskell:
Работа с XML

Как это сделать:

Haskell предлагает библиотеки, например, xml-conduit, для работы с XML. Следующий пример демонстрирует анализ строки XML и запрос элементов:

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

Пример вывода:

["World!"]

Подробнее

XML, что означает eXtensible Markup Language (расширяемый язык разметки), давно является стандартом сериализации данных, ещё до восхода JSON. Он многословен, но жёсткий и стандартизированный, что делает его подходящим для строгих корпоративных сред, устаревших систем и отраслей, таких как финансы и здравоохранение.

Haskell имеет несколько библиотек для работы с XML; однако, xml-conduit является одной из самых мощных и широко используемых благодаря своим эффективным возможностям потоковой передачи и парсинга, являясь частью семейства conduit для обработки потоков данных.

Альтернативой является HXT (Haskell XML Toolbox), который использует стрелки для парсинга и преобразования, предлагая другую парадигму для манипуляций с XML. Хотя HXT сейчас менее популярен из-за его более крутой кривой обучения, он всё ещё остаётся надёжным выбором для некоторых случаев использования.

При реализации обработки XML в Haskell, вам нужно будет заботиться об кодировке, так как строки в Haskell являются Unicode, а данные XML могут не быть таковыми. К тому же, пространства имён XML могут добавить дополнительную сложность к анализу.

См. также: