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.