【问题标题】:Simple Clojure XML edit简单的 Clojure XML 编辑
【发布时间】:2012-07-26 06:50:38
【问题描述】:

假设我有一个地图向量

[{:username "kbee" :firstname "Kay" :lastname "Bee"},
 {:username "jcee" :firstname "Jay" :lastname "Cee"}]

我想为每个地图生成 xml 文件,如下所示

  <user>
   <username>kbee</username>
   <firstname>Kay</firstname>
   <lastname>Bee</lastname>
  </user>

我如何只使用 clojure 核心库来实现这一点。 (我看了 enlive 和fleet,但它们对我来说似乎有点复杂。)

理想情况下我想做以下事情

(map #(spit (str (:username %) ".xml") (gen-xml sometemplate %) map-of-users))

【问题讨论】:

    标签: xml clojure xml-generation


    【解决方案1】:

    您尝试过 clojure.xml/emit-element 吗? :

    (use 'clojure.xml)
    (def v [{:username "kbee" :firstname "Kay" :lastname "Bee"},
            {:username "jcee" :firstname "Jay" :lastname "Cee"}])
    
    (defn to-xml [m] (doseq [[k v] m] 
                      (emit-element {:tag k :content [v]}) ))
    

    在 REPL 试用:

    user> (to-xml (first v))
    <username>kbee
    </username>
    <firstname>Kay
    </firstname>
    <lastname>Bee
    </lastname>
    nil
    

    然后,您只需使用用户标签将 to-xml 中的内容包装起来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-30
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      相关资源
      最近更新 更多