Haskell:
עבודה עם XML
איך לעשות:
האסקל מציע ספריות כמו 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, שמכונה בשמו המלא שפת סימון מורחבת, היה בסיסי בסריאליזציה של נתונים הרבה לפני עלייתו של JSON. הוא מפורט, אך קפדני ומתוקנן, מה שהופך אותו למתאים לסביבות עסקיות נוקשות, מערכות ישנות ותעשיות כמו פיננסים ובריאות.
להאסקל יש מספר ספריות ל-XML; עם זאת, xml-conduit
היא בין החזקות והנפוצות ביותר בזכות יכולות הניתוח והשידור היעילות שלה, חלק ממשפחת conduit
לטיפול בזרמי נתונים.
חלופות כוללות את HXT
(כלי עבודה ל-XML בהאסקל) אשר משתמש בחצים לניתוח והמרה, ומציע פרדיגמה שונה למניפולציות ב-XML. למרות ש-HXT
פחות פופולרית כיום בגלל עקומת הלמידה התלולה יותר, עדיין מדובר בבחירה קבועה לחלק מהמקרים.
כאשר מיישמים עיבוד XML בהאסקל, יש להתייחס לקידוד, מכיוון שמחרוזות האסקל הן ביוניקוד ונתוני ה-XML עשויים שלא להיות כאלה. כמו כן, מרחבי שמות XML יכולים להוסיף מורכבות נוספת לניתוח.
ראו גם:
- תיעוד החבילה
xml-conduit
: https://hackage.haskell.org/package/xml-conduit - כלי העבודה ל-XML של האסקל (HXT): http://hackage.haskell.org/package/hxt
- הספר “האסקל בעולם האמיתי”, פרק 16, לעיבוד XML: http://book.realworldhaskell.org/read/xml.html
- הוויקי של האסקל על XML: https://wiki.haskell.org/XML