Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re: Sort n Create XML

by misc (Pilgrim)
on Aug 20, 2007 at 09:41 UTC ( #633755=note: print w/replies, xml ) Need Help??

in reply to Sort n Create XML

Here is my version, utilizing XML::Twig

#!/usr/bin/perl -w use strict; use warnings; use XML::Twig; my $t= XML::Twig->new(pretty_print=>'indented'); $t->parse( join('',<DATA>) ); $t->root->sort_children( sub{ my $e = shift; return 0 if $e->tag eq 'header'; return 10000000 if $e->tag eq 'footer'; my @strength = $e->getElementsByTagName('strength') or + die "Malformed element:\n".$e->sprint; return $strength[0]->text; }, type=>'numeric' ); $t->print; __DATA__ <?xml version="1.0" encoding="UTF-8"?> <system> <header></header> <class> <name>Eight</name> <strength>8</strength> </class> <class> <name>Four</name> <strength>4</strength> </class> <class> <name>Ten</name> <strength>10</strength> </class> <class> <name>One</name> <strength>1</strength> </class> <footer></footer> </system>
The sort sub function is quite ugly and buggy,
if you are going to use Twig, you should either print the header, footer and the sorted classes in separate prints or surround all classes with a e.g. <allclasses> tag.

I just wanted to give an idea how you could use Twig for the job.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://633755]
[LanX]: yep heard the same origin story
[Your Mother]: I like it. I tottered on going into hucksterism because I feel like the world deserves it.
[LanX]: he ... we have a movement here called Anti-Germans based on this
[Corion]: Your Mother: I think that's because (in the west) the Nazi-Germans are recognized as universally evil. Of course, you could do some number games to calculate other measures of evil than "historic losers of second world war" to come up with other evils:)
[Corion]: I've heard "Troll" described as the new Punk, and in a way, it can be as destructive as living the Punk lifestyle, and you don't have to sit out in the cold...
[LanX]: Anti-Germans
[LanX]: Socrates was a Troll
[Your Mother]: It's very, very dangerous... Thinking that a group is intrinsically evil... buries the fact that all humans can be so deep that it starts to become likely they will be.
[Your Mother]: LanX++
[Corion]: (also the "troll for trolls sake" could seen be much like the "punk for punks beer")

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (15)
As of 2018-03-19 13:41 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (240 votes). Check out past polls.