Я не знаю, насколько он идиоматичен для Clojure, но если вы знаете и любите XPath , его можно довольно легко использовать в Clojure из-за его превосходной совместимости с Java :
(import javax.xml.parsers.DocumentBuilderFactory)
(import javax.xml.xpath.XPathFactory)
(defn document [filename]
(-> (DocumentBuilderFactory/newInstance)
.newDocumentBuilder
(.parse filename)))
(defn get-value [document xpath]
(-> (XPathFactory/newInstance)
.newXPath
(.compile xpath)
(.evaluate document)))
user=> (get-value (document "something.xml") "//a/b/text()")
"SOMETHING"