Как сказано, Атрибуты относительно легко создать. Другая часть работы - это создание кода, который его использует. В большинстве случаев вы будете использовать отражение во время выполнения, чтобы изменить поведение, основанное на наличии атрибута или его свойств. Существуют также сценарии, в которых вы будете проверять атрибуты на скомпилированном коде, чтобы сделать какой-то статический анализ. Например, параметры могут быть помечены как ненулевые, а инструмент анализа может использовать это как подсказку.
Использование атрибутов и знание соответствующих сценариев для их использования - основная часть работы.
Enlive - отличный инструмент для этого. Короче:
(ns foo.bar
(:require [net.cgrand.enlive-html :as html]))
(defn fetch-page [url]
(html/html-resource (java.net.URL. url)))
Здесь - хороший учебник по использованию его как скребка / парсера, так и в качестве механизма шаблона:
Здесь - короткий пример соскабливания страницы.
Другой вариант - clj-tagsoup . Enlive также использует tagoup, но, кроме того, имеет подключаемый парсер, поэтому вы можете добавить поддержку для других парсеров.
Clojure xml библиотека синтаксического анализа для вас.
Парширует и загружает источник s, который может быть файлом, InputStream или String, именовавшим URI. Возвращает дерево структурной карты xml / element, которая имеет ключи: tag,: attrs и: content. и аксессуар fns tag, attrs и контент. Другие синтаксические анализаторы могут быть предоставлены путем передачи startparse, fn, берущего источник и ContentHandler, и возвращения парсера
blockquote>Или используйте enlive , он полностью интегрирован в clojure или использует Java на основе HtmlCleaner .