Clojure:
Praca z XML

Jak to zrobić:

Clojure oferuje bibliotekę clojure.data.xml do parsowania i emitowania XML. Najpierw sparsujmy trochę XML:

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

(let [content "<root><foo>bar</foo><foo>baz</foo></root>"
      parsed (xml/parse-str content)] ; Parsowanie ciągu XML
  (println parsed))

Wyjście:

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

Aby emitować XML z struktur Clojure:

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

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

Wyjście:

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

Wnikliwe spojrzenie

XML krąży po branży od późnych lat ‘90, zaczynając jako uproszczony podzbiór SGML, przeznaczony dla danych internetowych. Jego użycie wybuchło wraz z technologiami takimi jak SOAP i XHTML, ale otrzymał pewną konkurencję od JSON, który jest preferowany ze względu na lekkość i prostotę.

Podejście Clojure do XML jest funkcjonalne i skupione na danych, pozostając wiernym etosowi języka. clojure.data.xml to tylko jedna z opcji; masz też clojure.xml dla podstawowych potrzeb, a dla interoperacyjności z Javą możesz sięgnąć po potężne narzędzia takie jak JAXB czy DOM4J.

Należy pamiętać, że wydajność i obciążenie pamięciowe przy bardzo dużych dokumentach XML mogą być znaczne. Parsery strumieniowe, takie jak StAX, mogą pomóc, ale będziesz musiał zapuścić się do świata Javy, aby ich użyć.

Zobacz także