Clojure:
עבודה עם XML

איך ל:

Clojure מציעה את הספריה clojure.data.xml לניתוח והפקת XML. ראשית, בואו ננתח קצת XML:

(require '[clojure.data.xml :as xml])

(let [content "<root><foo>bar</foo><foo>baz</foo></root>"
      parsed (xml/parse-str content)] ; ניתוח מחרוזת XML
  (println parsed))

פלט:

Element{:tag :root, :attrs {}, :content (Element{:tag :foo, :attrs {}, :content ("bar")} Element{:tag :foo, :attrs {}, :content ("baz")})}

להפיק XML ממבנים של Clojure:

(def my-xml (xml/element :root {}
                          (xml/element :foo {} "bar")
                          (xml/element :foo {} "baz")))

(println (xml/emit-str my-xml))

פלט:

<root><foo>bar</foo><foo>baz</foo></root>

טבילה עמוקה

XML היה כאן עוד מאז שנות ה-90 המאוחרות, התחיל כתת-קבוצה מופשטת של SGML, במטרה להיות מיועד לנתוני אינטרנט. הוא התפוצץ בשימוש בטכנולוגיות כמו SOAP ו-XHTML אך קיבל קצת תחרות מ-JSON, שהוא מועדף בגלל הקלות והפשטות שלו.

הגישה של Clojure ל-XMl שומרת על זה פונקציונלי וממוקד נתונים, נאמן לאתוס השפה. clojure.data.xml היא רק אופציה אחת; יש לכם גם את clojure.xml לצרכים בסיסיים, ולשם התממשקות עם Java, אתם יכולים להשתמש בגדולים כמו JAXB או DOM4J.

שימו לב, הביצועים והנטל על הזיכרון כאשר מתמודדים עם מסמכי XML גדולים מאוד יכולים להיות כבדים. מנתחי זרם כמו StAX יכולים לעזור, אך תצטרכו לצאת לעולם של Java בשבילם.

ראו גם