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ć.