Clojures clojure.xml / parse,clojure.zip/xml-zip和clojure.contrib.zip-filter.xml / xml->是从xml中提取值的优秀工具,但是如果我想根据从xml->中学到的内容更改xml(clojure.zip/xml-zip的结果),该怎么办? “查询”并将结果写回xml?
我会预期(clojure.contrib.prxml / prxml(clojure.xml / parse xml-content))吐回xml,但情况并非如此.
更新:实际上,为了发布
XML,最好使用clojure.contrib.lazy-xml / emit,因为clojure.xml / emit目前可能会破坏事情!看下面我的评论.
(现在把这个答案留在这里作为警告)
如果我理解正确,问题的主要重点是将(可能是突变的)XML表示转换成XML文本?
如果是这样,请查看clojure.xml / emit和clojure.xml / emit-element:
user> (with-out-str (xml/emit {:tag :foo :attrs {:bar "quux"}})) "<?xml version='1.0' encoding='UTF-8'?>\n<foo bar='quux'/>\n"
(with-out-str捕获打印的输出并将其包装成一个字符串;由于某种原因,xml / emit打印出xml,所以它在这里很方便,你将要使用emit-element if<?xml version = '1.0'encoding ='UTF-8'?>不是你想要的.)