README.md 展示了如何使用 java.io.FileWriter 编写 XML 文件。因此,该示例仅在 Java 平台的默认编码是 UTF-8 时才有效。建议:README 使用 clojure.java.io/writer,其默认编码在所有地方都是 UTF-8,这将展示一种更广泛可用的技术。
使用 README 示例的示例程序
{code:clojure}
(ns garble
(:require [clojure.data.xml :refer [element emit]]))
(defn -main
"尝试写入一个 XML 文件"
[]
(let [tags (element :foo {:foo-attr "foo value"}
(element :bar {:bar-attr "bar value"}
(element :baz {} "The baz value")))]
(with-open [out-file (java.io.FileWriter. "/tmp/foo.xml")]
(emit tags out-file))))
调用 1 (覆盖 Java 的默认编码,因为 Java 倾向于在我的电脑上使用 UTF-8)
{{java -cp ... -Dfile.encoding=US-ASCII clojure.main -m garble}}
结果
{{java.lang.Exception: 流的输出编码(UTF-8)与声明(ASCII)不匹配}}
调用 2
{{java -cp ... -Dfile.encoding=UTF-8 clojure.main -m garble}}
结果:成功写入 /tmp/foo.xml