xml - clojure.xml/emit 发生了什么?

标签 xml clojure

很多博客都提到了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、两位 Stuart 和 Chris Houser 等编写的部分)我需要花一些时间研究该代码。

最佳答案

奇怪的是,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

现在请注意,您关于它们从 1.2(clojure.xmlclojure.contrib.lazy-xml)文档中消失的说法是完全正确的,除了 prxml。这不是你真正想要的。我无法解释为什么会这样,但在检查其文档字符串后,它们不再出现在 Web 界面中的原因变得显而易见。

user=> (doc emit)
-------------------------
clojure.xml/emit
([x])
  nil
nil

现在有这个线程在 Google Group这表明不鼓励使用 emit 函数有两个原因。

  1. 它没有记录在案,因此如有更改,恕不另行通知。
  2. 它通常不会生成有效的 xml(尽管我想如果您知道您的数据是有效的,它会发出有效的 xml)。

在该线程的末尾,Stuart Halloway 谈到了一个扩展 Clojure 的 XML 支持的项目。

当然,总有人会涉足 Java 池并在 Java 端使用任何优秀的 XML 工具。听起来 Clojure 的 XML 故事主要是在此时的解析中讲述的。

希望对您有所帮助。

关于xml - clojure.xml/emit 发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4440523/

相关文章:

clojure:没有cons细胞

xml - 发布 DTD/XXE XML 时测试 Scala Play 行为

jdbc - 如何使用 clojure 禁用 JDBC 中的自动提交

clojure - ClojureScript的设计与实现

XML 架构 : Restrict child element based on attribute value of parent element?

clojure - Clojure 中的 seq 函数注意事项

web - Bidi、Ring 和 Lein 的简单 Web 应用程序给出 500 错误

xml : how to reference a . .xml 文件中的 xsd 文件?

xml - 如何使用 XSLT 从子节点获取父节点

xml - 如何在 Angular 4 中将 xml 转换为 json?