On Fri, 2008-09-26 at 18:02 +0300, Vyacheslav Karamov wrote: > Hi All! > > I'm parsing XML using XML::Parser::Expat > > ... > $self->{parser}->setHandlers( > Start=>\&OnStartElement, > End=>\&OnEndElement, > Char=>\&OnCharacters); > > ... > sub OnStartElement > { > my $parser = shift; > my $el = shift; > %attrs = shift if @_ > 2;
my %attrs = @_; # The remaining parameters form a hash > ... > } > > In %attrs parser stores XML tag attributes names and values. > After some processing I need to store tags and attributes back to XML. > But how could I preserve attributes order? > > So, first I need to save attributes in array in order to save order? > How can I do it? > my @X = (); sub OnStartElement { my $parser = shift @_; my $el = shift @_; my %attrs = @_; push @X, { el => $el, attrs => { %attrs }, char => '', }; } sub OnEndElement { my $parser = shift @_; my $el = shift @_; my %attrs = %{ $X[-1]{attrs} }; my $text = $X[-1]{char}; pop @X; # Process the element here } sub OnChar { my $parser = shift @_; my $data = shift @_; $X[-1]{char} .= $data; } -- Just my 0.00000002 million dollars worth, Shawn Linux is obsolete. -- Andrew Tanenbaum -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/