in reply to Re: The mostly used xml parser
in thread The mostly used xml parser

I've not found anything XML::Twig couldn't do. Including moving elements around. ;-) In fact, I use XML::Twig to manipulate HTML tables to "automatically" re-insert the header of the table every x rows (so you don't need to scroll too far to see the header info), and to change the class for each row (tr element) to alternate so that CSS can come by and change the background colour to make it again easier to follow with the eye.

Perhaps XML::TreeBuilder would be easier for this. I'm not sure. Maybe XML::Twig is just my metaphorical hammer, and all XML problems seem to be nails to me. Or perhaps XML::Twig is the swiss-army-knife of XML processors, and I chose well. Up to you to decide. ;-)

Replies are listed 'Best First'.
Re^3: The mostly used xml parser
by GrandFather (Saint) on Oct 05, 2005 at 19:57 UTC

    A month ago I'd not have mentioned XML::Twig - XML/HTML::TreeBuilder was my hammer. Having seen mention of XML::Twig] so frequently I've started using it too and it does do filtering (my first application for it) very nicely!

    What I'd like would be an HTML::Twig. Might not be as "easy" to write though :).


    Perl is Huffman encoded by design.

      Processing HTML is not too difficult, as long as tidy is around:

      perl -MXML::Twig -e'open( my $fh, "tidy -asxml -quiet pm.html 2>/dev/null| ") or die $!; XML::Twig->parse( $fh)'

      Keeping the output similar to the input is of course much harder, as in this case XML::Twig does not see the original file.

      Here I pay for the fact that XML::Twig does not accept a SAX stream as input, or I could use XML::LibXML::SAX and get HTML parsing for free (SAX was quite new when I started writing XML::Twig, and now it is coupled very strongly with XML::Parser).

        Excellent point - using tidy as a preprocessor goes a long way to bridging the gap. It is also interesting to note that there is a tidy.pm available, although the Active State ppm install of it doesn't manage to hook the documentation into Active State's Perl documentation :(.


        Perl is Huffman encoded by design.