который обеспечивает очень краткий синтаксис для управления вложенными структурами данных, такими как 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")

но не нашел похожих декларативных функций для удаления / редактирования потомков.

Ответы на вопрос(3)

Ваш ответ на вопрос