2009-12-03 42 views
5

例如,prxml函數將XML打印到* out *。我想反而將此輸出捕獲爲一個字符串。下面是從REPL典型用法:從Clojure函數捕獲打印到* out *的慣用方法是什麼?

user> (prxml [:p "Test"]) 
<p>Test</p>nil 

我反而喜歡做的事:

(def xml (capture-out (prxml [:p "Test"]))) 

我做了拍攝出功能,但我懷疑類似的東西存在,只有我在API或郵件列表中找不到它。

回答

6

我剛剛從great blog post中發現了with-out-str,詳細介紹了Clojure中的XML處理。

所以正確執行我的例子是:

(def xml (with-out-str (prxml [:p "Test"]))) 
6

更一般地,如果你看一下源with-out-str你可以看到如何動態綁定*out*使用binding任何流。這適用於動態設置任何現有變量的值。

相關問題