gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 02:05:42 25 4
gpt4 key购买 nike

很多博客都提到了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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com