Example:
So how can I do this with clojure?
Advance so far
(defn zip-str [s]
(clojure.zip/xml-zip (clojure.xml/parse (java.io.ByteArrayInputStream. (.getBytes s)))))
(def x (zip-str "<simple> <code> content1 <x> r </x> </code> </simple>"))
(def y (zip-str "<simple> <code> content2 <x> s </x> </code> </simple>"))
(defn xml-merge [a b]
(if (not (string? a))
(merge-with
(fn [x y]
(cond
(and (map? x) (= (:tag x) (:tag y)))
(do (xml-merge x y) )
(vector? x)
(map #(xml-merge %1 %2) x y)
:else
y))
a b)
[a b]))
(xml-merge (get y 0) (get x 0))
But this will fail if the xml tags are not in proper order:
"<simple> <code> content1 <x> r </x> </code> </simple>"
vs
"<simple> <code> <x> r </x> content 2 </code> </simple>"