[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Yaron Minsky <yminsky@g...> |
| Subject: | Re: [Caml-list] xpath or alternatives |
I don't have the code in front of me, but I've done something like
this using the list monad. i.e., using bind (= concat-map) and map
chained together, along with a couple operators I wrote for lifting
bits of XML documents into lists, by say returning the subnodes of the
present node as a list.
It was quite effective. I got the inspiration from a similar tool we
have for navigating s-expressions, which we should release at some
point...
Yaron Minsky
On Sep 28, 2009, at 8:17 AM, Richard Jones <rich@annexia.org> wrote:
>
> I need to do some relatively simple extraction of fields from an XML
> document. In Perl I would use xpath, very specifically if $xml was an
> XML document[1] stored as a string, then:
>
> my $p = XML::XPath->new (xml => $xml);
> my @disks = $p->findnodes ('//devices/disk/source/@dev');
> push (@disks, $p->findnodes ('//devices/disk/source/@file'));
>
> This isn't type safe or pretty, but it is very easy to use for quick
> and dirty extraction.
>
> What is the OCaml equivalent for this sort of code?
>
> Alain Frisch has a library called Xpath
> (http://alain.frisch.fr/soft.html#xpath), but unfortunately this
> relies on the now obsolete wlex program.
>
> Is there a completely alternative way to do this? Better still, in 3
> lines of code??
>
> Rich.
>
> [1] for XML doc, see: http://libvirt.org/formatdomain.html
>
> --
> Richard Jones
> Red Hat
>
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs