I'm sure I already posted this at work before I left but when I got home I found I hadn't. I guess I must have forgot to hit submit or something :)
Well today I did a bit of XML hacking for the first time in a while. Usually I use XML::Simple as it is a no brainer, but this time I'm dealing with big files and I thought I it would be a good excuse to learn XML::Twig. I think mirod has done a fantastic job on this module.
Such a good job that my XML processing is basically:
use XML::Twig;
my @orders = ();
sub handle_order {
my ($twig, $order) = @_;
my $tax = $order->get_xpath('./Total/Line[@type="Tax"]', 0);
if ($tax && $tax->text > 0) {
my $addr = $order->get_xpath('./AddressInfo[@type="ship"]', 0);
push @orders, [(map $addr->field($_), qw(Zip City State)), $tax->text];
}
$twig->purge;
};
my $twig = XML::Twig->new(TwigHandlers => { Order => \&handle_order } );
$twig->parsefile('OrderList.xml');