(defn emit
[e & {:as opts}]
(let [content-handler (atom nil)
trans (-> (javax.xml.transform.TransformerFactory/newInstance)
.newTransformer)]
(when (:indent opts)
(.setOutputProperty trans "indent" "yes")
(.setOutputProperty trans "{http://xml.apache.org/xslt}indent-amount"
(str (:indent opts))))
(when (contains? opts :xml-declaration)
(.setOutputProperty trans "omit-xml-declaration"
(if (:xml-declaration opts) "no" "yes")))
(when (:encoding opts)
(.setOutputProperty trans "encoding" (:encoding opts)))
(.transform
trans
(javax.xml.transform.sax.SAXSource.
(reify org.xml.sax.XMLReader
(getContentHandler [_] @content-handler)
(setDTDHandler [_ handler])
(setFeature [_ name value])
(setProperty [_ name value])
(setContentHandler [_ ch] (reset! content-handler ch))
(^void parse [_ ^org.xml.sax.InputSource _]
(when @content-handler
(.startDocument @content-handler)
(emit-element e @content-handler)
(.endDocument @content-handler))))
(org.xml.sax.InputSource.))
(javax.xml.transform.stream.StreamResult. *out*))))
Used in 0 other vars
Comments top
No comments for emit. Log in to add a comment.