Reading
> (with-open [input (io/input-stream "dev-resources/hello.xml")] (exml/read input)) ;=> #eximia.core.Element{:tag #qname[greeting], :attrs {#qname[style] "programmatic"}, :content ["Hello, world!"]} ;; Reader works too (but can be slightly slower): > (with-open [input (io/reader "dev-resources/hello.xml")] (exml/read input)) ;=> #eximia.core.Element{:tag #qname[greeting], :attrs {#qname[style] "programmatic"}, :content ["Hello, world!"]} ;; Even slower, just to demonstrate `read-str`: > (exml/read-str (slurp "dev-resources/hello.xml")) ;=> #eximia.core.Element{:tag #qname[greeting], :attrs {#qname[style] "programmatic"}, :content ["Hello, world!"]} ;; javax.xml.namespace.QName:s are used by default, to support XML namespaces. ;; But keywords can be obtained instead: > (with-open [input (io/input-stream "dev-resources/hello.xml")] (exml/read input {:tag-fn exml/qname->keyword, :key-fn exml/qname->keyword})) ;=> #eximia.core.Element{:tag :greeting, :attrs {:style "programmatic"}, :content ["Hello, world!"]}