许多博客都引用了clojure.xml / emit(或clojure.contrib.lazy-xml / emit)函数,但1.2文档似乎没有。
它被弃用了吗?什么取代了它?
可以用来编写Clojure编码的XML(例如:{:tag :address :content {:tag :street ...} }
)吗?
更新:我查看了clojure.contrib.lazy-xml/emit
(来自Chris Houser)的源代码,虽然它也不是“官方”,但它看起来比{{{}更稳定。 1}}。
答案 0 :(得分:5)
奇怪的是,clojure.xml/emit
仍然存在,当您在1.2.0的REPL中(use 'clojure.xml)
该命名空间时。
验证:
user=> (use 'clojure.xml)
user=> (emit (parse "http://feeds.feedburner.com/burningonesblog"))
对于完整的披露,我使用有用的(ns-map 'user)
函数
user=> (doc ns-map)
-------------------------
clojure.core/ns-map
([ns])
Returns a map of all the mappings for the namespace.
nil
现在请注意,除了clojure.xml以外的所有文件,你对1.2(clojure.contrib.lazy-xml和prxml)中的文档消失完全正确,这不是你真正想要的对于。我不能说出为什么会这样,但是在检查他们的文档时,他们不再出现在Web界面中的原因就变得明显了。
user=> (doc emit)
-------------------------
clojure.xml/emit
([x])
nil
nil
现在Google Group上有这个帖子,表示不鼓励使用emit
功能。
在该主题结束时,Stuart Halloway谈到了一个扩展Clojure XML支持的项目。
当然,总是会深入Java池并使用Java端的任何优秀的XML工具。听起来好像clojure的XML故事主要是在解析时告诉他们。
希望有所帮助。
答案 1 :(得分:0)
如果您正在运行clojure 1.2,则有clojure.contrib.prxml。
如果您正在运行clojure 1.3,则替换应为https://github.com/clojure/data.xml
然而根据dev.clojure.org上的“哪里有clojure.contrib去”文档,新的lib还没有存储库,它可能是在某个地方构建并在maven repo中,但我无法找到它。打包自己很容易。
我有一些使用prxml的遗留代码,所以我最终修复了prxml以使用Clojure 1.3,它位于clojars.org https://clojars.org/weissjeffm/clojure.prxml
这对我来说很好,但你的里程可能会有所不同。