1
ClojureのBaseXの内部データ型を使用してXML構造を構築しようとしています。clojure:forループの内容が呼び出されない
(def test-elem (basex-elem "element-name" {:key1 "value1", :key2 "value2"}))
; => #'user/test-elem
をこうして値は、任意の属性なしで戻ってくる:要素を作成するために泣き、これを使用して
(defn basex-elem [token-name dict]
(let [elem (org.basex.query.item.FElem.
(org.basex.query.item.QNm. token-name))]
(for [[k v] dict]
(do
(println "THIS IS REACHED")
(let [k-name (org.basex.query.item.QNm. (.getName k))
k-attr (org.basex.query.item.FAttr.
k-name
org.basex.util.Token/token v))]
(.add elem k-attr))))
elem))
は、 "THISに到達する" 印刷されることはありません
test-elem
; => #<FElem <element-name/>>
しかし、属性を追加するのは別の方法です。
(.add test-elem
(org.basex.query.item.FAttr.
(org.basex.query.item.QNm. "foo")
(org.basex.util.Token/token "bar")))
; => #<FElem <element-name foo="bar"/>>
したがって、おそらく私はループに何か間違っています。すべてのポインタ?
"遅れたシーケンスを生成する"というのは、docs(http://clojuredocs.org/clojure_core/clojure.core/for)にあります。私はそれを見ません。ありがとう! –