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-миру для их использования.

Смотрите также