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 יכולים להוסיף מורכבות נוספת לניתוח.

ראו גם: