Version française
Home     About     Download     Resources     Contact us    
Browse thread
xpath or alternatives
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ 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