许多博客都引用了clojure.xml/emit(或clojure.contrib.lazy-xml/emit)函数,但1.2文档似乎没有.
它被弃用了吗?什么取代了它?
它可以用来编写Clojure编码的XML(例如:) {:tag :address :content {:tag :street ...} }吗?
更新:我查看了clojure.contrib.lazy-xml/emit(由Chris Houser提供)的源代码,虽然它也不是"官方",但它看起来比一个更稳定的解决方案clojure.xml/emit.
顺便说一下,我已经"发现"了clojure和clojure-contrib源代码作为写得好的惯用语Clojure(特别是由大师,Rich Hickey,两个Stuarts,Chris Houser等编写的部分)的很好的例子.我会需要花一些时间研究那些代码.
奇怪的是,clojure.xml/emit当您(use 'clojure.xml)在1.2.0的REPL中使用该命名空间时仍然存在.
核实:
user=> (use 'clojure.xml)
user=> (emit (parse "http://feeds.feedburner.com/burningonesblog"))
Run Code Online (Sandbox Code Playgroud)
为了完全披露,我使用有用的(ns-map 'user)功能发现了这一点
user=> (doc ns-map)
-------------------------
clojure.core/ns-map
([ns])
Returns a map of all the mappings for the namespace.
nil
Run Code Online (Sandbox Code Playgroud)
现在请注意,对于除了prxml之外的所有文件,你完全正确地从1.2(clojure.xml和clojure.contrib.lazy-xml)中的文档中消失了,这不是你真正想要的.我不能说出为什么会这样,但是在检查他们的文档时,他们不再出现在Web界面中的原因变得明显.
user=> (doc emit)
-------------------------
clojure.xml/emit
([x])
nil
nil
Run Code Online (Sandbox Code Playgroud)
现在谷歌集团有这个线程,表明emit不鼓励使用该功能有两个原因.
在该主题的最后,Stuart Halloway谈到了一个扩展Clojure的XML支持的项目.
当然,总是潜入Java池并使用Java端的任何优秀的XML工具.听起来好像clojure的XML故事主要是在解析这一点时讲述的.
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
1152 次 |
| 最近记录: |