Suponga que tiene la siguiente XML para analizar en su archivo:
<high-node>
<low-node>my text</low-node>
</high-node>
se carga clojure.xml
:
user=> (use 'clojure.xml)
cuando se analiza, el código XML tendrá la siguiente estructura:
{:tag :high-node, :attrs nil, :content [{:tag :low-node, :attrs nil, :content ["my text"]}]}
y luego puede buscar el contenido del archivo para obtener el contenido de th e low-node
:
user=> (for [x (xml-seq
(parse (java.io.File. file)))
:when (= :low-node (:tag x))]
(first (:content x)))
("my text")
Del mismo modo, si quería tener acceso a toda la lista de información de bajo nodo, que cambiaría el :when
predicado a (= (:high-node (:tag x)))
:
user=> (for [x (xml-seq
(parse (java.io.File. file)))
:when (= :high-node (:tag x))]
(first (:content x)))
({:tag :low-node, :attrs nil, :content ["my text"]})
Esto funciona porque las palabras clave puede operar como funciones. Ver Questions about lists and other stuff in Clojure y Data Structures: Keywords
Los ejemplos de zip-query.clj se pueden encontrar en xml_test.clj que se encuentra en src/test/clojure/clojure/datos/zip en el repositorio github para clojure.data.zip –
divertido, pregunté esto como bien, y obtuve excelentes respuestas de algunas de las personas más útiles en SO. Sin embargo, incluso después de ejecutar los datos analizados resultantes.xml a través de una de las sugerencias, la estructura resultante todavía no tiene mucho sentido para mí. Voy a ver tu xml-zip, a menos que data.xml sea su sucesor. – octopusgrabbus