Looking at the source of clojure.data.zip, it looks like something like: (xml-> x :a (seq-test [(tag= :b1) (tag= :b3)]) :c)
(untested) might work? http://clojure.github.com/data.zip/ On Mon, Nov 5, 2012 at 10:38 AM, Stefan Kamphausen <ska2...@gmail.com> wrote: > Hi, > > AFAIK the currently supposed way of parsing XML with Clojure is to use a > combination of clojure.xml, clojure.zip, data.zip and data.zip.xml. Please > correct me if I'm wrong. > > I am trying to extract the equivalent of a union of nodesets from an XML > file (speaking in XPath terms). > > Example: > > input.xml: > > <root> > <a> > <b1> > <c>C1</c> > <c>C2</c> > </b1> > <b2> > <c>C3</c> > <c>C4</c> > </b2> > <b3> > <c>C5</c> > <c>C6</c> > </b3> > </a> > </root> > > Suppose I have an array (or whatever) with the allowed b-tags, e.g. b1 and > b3. Now I want to extract all c-tags underneath b1 and b3 but skip those > under b2. > > Using clojure.xml/parse, clojure.zip/xml-zip and data.zip.xml/xml-> I can > easily extract certain nodes but I have not found a way to extract such a > union, yet. > > A rather lispy approach would be using or in a manner similar to this: > > (def x (clojure.zip/xml-zip (clojure.xml/parse "/path/to/input.xml"))) > (clojure.data.zip.xml/xml-> x :a (or :b1 :b3) :c) > > And I did not yet understand how to write my own predicates there. > > Any pointers? > > > Kind regards, > stefan > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with your > first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en