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
In reply to twig inbuilt methods to sort whole xml tree by bharathinc
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |