bharathinc has asked for the wisdom of the Perl Monks concerning the following question:
Hi, I would like to sort whole xml tree i.e attribute as well as on text of all sub elements. I have attached my code below. But the problem here is... attribute sort is fine, where as the sub element sorting has done only for the first set. Could you please help me to resolve this ASAP. It will be of great help. Thank you in advance
#!/bin/perl -w use strict; use XML::Twig; my $twig= XML::Twig->new(pretty_print=>'indented'); $twig->parse(\*DATA); my $root=$twig->root; $twig->root->first_child->sort_children( sub { $_->{'att'}->{"type"}}) +; $twig->root->first_child->first_child->sort_children( sub { $_->text}) +; #$twig->root->sort_children_on_att("type"); #$twig->root->sort_children_on_field('mainterm'); $twig->print; __DATA__ <enhancement> <descriptorgroup> <descriptors type="MED" controlled="y"> <descriptor> <mainterm weight="a">plague</mainterm> <mainterm>disease</mainterm> <mainterm>pestilence</mainterm> </descriptor> </descriptors> <descriptors type="DRG" controlled="y"> <mainterm>panadol</mainterm> <mainterm weight="a">zorro</mainterm> <mainterm>xenon</mainterm> <mainterm weight="a">aspirin</mainterm> </descriptors> </descriptorgroup> </enhancement>
output I got was as below
---------- perl compile ---------- <enhancement> <descriptorgroup> <descriptors controlled="y" type="DRG"> <mainterm weight="a">aspirin</mainterm> <mainterm>panadol</mainterm> <mainterm>xenon</mainterm> <mainterm weight="a">zorro</mainterm> </descriptors> <descriptors controlled="y" type="MED"> <descriptor> <mainterm weight="a">plague</mainterm> <mainterm>disease</mainterm> <mainterm>pestilence</mainterm> </descriptor> </descriptors> </descriptorgroup> </enhancement> Output completed (3 sec consumed) - Normal Termination
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: twig inbuilt methods to sort whole xml tree
by NetWallah (Canon) on Mar 07, 2010 at 23:45 UTC | |
by bharathinc (Novice) on Mar 08, 2010 at 06:40 UTC | |
by bharathinc (Novice) on Mar 09, 2010 at 06:05 UTC | |
|