Clojure:
Att arbeta med XML

Hur man gör:

Clojure erbjuder biblioteket clojure.data.xml för XML-tolkning och generering. Först, låt oss tolka lite XML:

(require '[clojure.data.xml :as xml])

(let [content "<root><foo>bar</foo><foo>baz</foo></root>"
      parsed (xml/parse-str content)] ; Tolka XML-sträng
  (println parsed))

Utdata:

Element{:tag :root, :attrs {}, :content (Element{:tag :foo, :attrs {}, :content ("bar")} Element{:tag :foo, :attrs {}, :content ("baz")})}

För att generera XML från Clojure-strukturer:

(def my-xml (xml/element :root {}
                          (xml/element :foo {} "bar")
                          (xml/element :foo {} "baz")))

(println (xml/emit-str my-xml))

Utdata:

<root><foo>bar</foo><foo>baz</foo></root>

Fördjupning

XML har funnits ett tag, med start i slutet av 90-talet som en förenklad version av SGML, avsedd för webbdata. Användningen exploderade med teknologier som SOAP och XHTML men fick konkurrens av JSON, som föredras för dess lättvikt och enkelhet.

Clojures tillvägagångssätt för XML håller det funktionellt och datacentrerat, vilket är sant för språkets ethos. clojure.data.xml är bara ett alternativ; du har clojure.xml för grundläggande behov, och för Java-interoperabilitet kan du använda dig av tungviktare som JAXB eller DOM4J.

Tänk på att prestanda- och minnesanvändningen vid hantering av mycket stora XML-dokument kan vara betungande. Strömmande tolkare som StAX kan hjälpa, men då behöver du gå över till Java-land för dem.

Se även