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.

Дивіться Також