Melly has asked for the wisdom of the Perl Monks concerning the following question:
Hi,
I have the following XML that I want to sort by 'TabOrder':
<?xml version="1.0" encoding="windows-1252"?> <TPersonId name="PersonId" type="inherited"> <TcxTabSheet name="cxTabSheetIdentity" type="object"> <TScrollBox name="ScrollBox2" type="object"> <TabOrder type="shortint">2</TabOrder> <TcxDBDateEdit name="cxDBDateEdit4" type="object"> <TabOrder type="shortint">2</TabOrder> </TcxDBDateEdit> <TcxDBDateEdit name="cxDBDateEdit3" type="object"> <TabOrder type="shortint">1</TabOrder> </TcxDBDateEdit> </TScrollBox> <TScrollBox name="ScrollBox1" type="object"> <TabOrder type="shortint">1</TabOrder> <TcxDBDateEdit name="cxDBDateEdit2" type="object"> <TabOrder type="shortint">2</TabOrder> </TcxDBDateEdit> <TcxDBDateEdit name="cxDBDateEdit1" type="object"> <TabOrder type="shortint">1</TabOrder> </TcxDBDateEdit> </TScrollBox> </TcxTabSheet> </TPersonId>
The following perl script does what I want, but it also issues two identical warnings - Argument "" isn't numeric in numeric comparison (<=>) - how do I prevent the script from attempting to sort children who do not have a TabOrder? (which is what I assume is going on)
use strict; use warnings; use XML::Twig; my $twig = XML::Twig -> new(pretty_print => 'indented'); $twig->parsefile('test.xml'); foreach my $element($twig -> get_xpath('.//')){ $element -> sort_children_on_field('TabOrder', type => 'numeric'); } $twig -> print;
Tom Melly, mellytom2 (at) gmail (stop) commap{$a=1-$_/10;map{$d=$a;$e=$b=$_/20-2;map{($d,$e)=(2*$d*$e+$a,$e**2 -$d**2+$b);$c=$d**2+$e**2>4?$d=8:_}1..50;print$c}0..59;print$/}0..20
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Twig - sorting XML error
by choroba (Cardinal) on Sep 24, 2024 at 13:35 UTC |