我正在尝试使用Clojure中BaseX的内部数据类型构建XML结构.
(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))
Run Code Online (Sandbox Code Playgroud)
当用它来哭来创建一个元素时,永远不会打印出"这是真的":
(def test-elem (basex-elem "element-name" {:key1 "value1", :key2 "value2"}))
; => #'user/test-elem
Run Code Online (Sandbox Code Playgroud)
因此价值回归没有任何属性:
test-elem
; => #<FElem <element-name/>>
Run Code Online (Sandbox Code Playgroud)
但是添加属性会起作用.
(.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"/>>
Run Code Online (Sandbox Code Playgroud)
因此,大概是我在循环中做错了.有什么指针吗?
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |