который обеспечивает очень краткий синтаксис для управления вложенными структурами данных, такими как XML.
я есть следующая структура XML:
(def xmlstr
"<ROOT>
<Items>
<Item><Type>A</Type><Note>AA</Note></Item>
<Item><Type>B</Type><Note>BB</Note></Item>
<Item><Type>C</Type><Note>CC</Note></Item>
<Item><Type>A</Type><Note>AA</Note></Item>
</Items>
</ROOT>")
где я хочу удалить любой элемент, если он имеет тип B или C. Результат должен быть примерно таким:
<ROOT>
<Items>
<Item><Type>A</Type><Note>AA</Note></Item>
<Item><Type>A</Type><Note>AA</Note></Item>
</Items>
</ROOT>
Я нашел довольно тривиальным запрос таких структур с использованием data.xml и data.xml.zip, например:
;; lein try org.clojure/data.xml org.clojure/data.zip
(def xmldoc (clojure.data.xml/parse-str xmlstr))
(def zipxml (clojure.zip/xml-zip xmldoc))
(clojure.data.zip.xml/xml-> zipxml :Items :Item [:Type "A"] :Note clojure.data.zip.xml/text)
;; => ("AA" "AA")
но не нашел похожих декларативных функций для удаления / редактирования потомков.