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 могут добавить дополнительную сложность к анализу.
См. также:
- Документация пакета
xml-conduit
: https://hackage.haskell.org/package/xml-conduit - Haskell XML Toolbox (HXT): http://hackage.haskell.org/package/hxt
- Книга “Real World Haskell”, Глава 16, по обработке XML: http://book.realworldhaskell.org/read/xml.html
- Вики Haskell по XML: https://wiki.haskell.org/XML