in reply to Re^2: twig inbuilt methods to sort whole xml tree
in thread twig inbuilt methods to sort whole xml tree
This creates an artificial sort order, in order to implement higher priority for specifed elements (Up to 9999 of these).
Add your own __DATA__ section.#!/bin/perl -w use strict; use XML::Twig; my $twig= XML::Twig->new(pretty_print=>'indented'); $twig->parse(\*DATA); my $root=$twig->root; $root->first_child->sort_children_on_att("type"); #Specify list of items (mainterm) that are forced FIRST in the sort or +der sort_my_kids($root,['mainterm',]); $twig->print; sub sort_my_kids{ my ($me,$OrderTheseFirst) = @_; $me->sort_children( # Use special sort "get_key" sub, to specify artificial sort +order # Generated key is: 4-digit "Specified order", Tag, Value sub{my $el=shift; my $tag=$el->tag; my ($i)= (grep({$tag eq $OrderTheseFirst->[$_]} 0..$#$Ord +erTheseFirst) , 9999); ##Debug# printf " %04d%s\t",$i,$tag; return (sprintf "%04d%s%s",$i,$tag,$el->text_only()); } ); foreach my $kid($me->children){ sort_my_kids($kid,$OrderTheseFirst); # Recursive } }
Theory is when you know something, but it doesn't work.
Practice is when
something works, but you don't know why it works.
Programmers combine Theory
and Practice: Nothing works and they don't know why.
-Anonymous
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: twig inbuilt methods to sort whole xml tree
by bharathinc (Novice) on Mar 10, 2010 at 09:10 UTC | |
by bharathinc (Novice) on Mar 17, 2010 at 11:38 UTC | |
by NetWallah (Canon) on Mar 20, 2010 at 05:28 UTC |