Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^2: Modify XML tags

by mirod (Canon)
on Nov 19, 2011 at 11:27 UTC ( #938961=note: print w/ replies, xml ) Need Help??


in reply to Re: Modify XML tags
in thread Modify XML tags

Nice! One of the few cases where it makes sense to use force_end_tag_handlers_usage, Bravo!

I don't think you need the end_tag_handlers handler though, the start one should be enough. You could also flush at the end of the handler to save memory, if that's an issue (untested).


Comment on Re^2: Modify XML tags
Replies are listed 'Best First'.
Re^3: Modify XML tags
by Anonymous Monk on Nov 20, 2011 at 05:53 UTC

    Yup, start_tag_handlers is enough, but the flushing has to be done from end_tag_handler

    #!/usr/bin/perl -- use strict; use warnings; use XML::Twig; my $str = <<'EOF'; <NoTe KunG="FoO" ChOp="SuEy"> <To KunG="FoO"> <Person KunG="FoO">Satan</Person> </To> <Beef KunG="FoO"><SaUsAGe KunG="FoO">is Tasty</SaUsAGe></Beef> </NoTe> EOF { my $t = XML::Twig->new( pretty_print => 'indented', force_end_tag_handlers_usage => 1, start_tag_handlers => { _all_ => sub { $_->set_tag( lc $_->tag ); if( $_->has_atts ){ my $atts = $_->atts ; $_->set_atts ({ map { lc( $_ ) => $atts->{$_} } keys %{ $atts } }); } return }, }, end_tag_handlers => { _all_ => sub { $_->flush; return }, }, ); $t->parse($str); $t->flush(); } __END__ <note chop="SuEy" kung="FoO"> <to kung="FoO"> <person kung="FoO">Satan</person> </to> <beef kung="FoO"> <sausage kung="FoO">is Tasty</sausage> </beef> </note>
Re^3: Modify XML tags
by Anonymous Monk on May 30, 2013 at 02:03 UTC

    I don't think you need the end_tag_handlers handler though, the start one should be enough. You could also flush at the end of the handler to save memory, if that's an issue (untested).

    Flushing in start_tag handler doubles the output  <note chop="SuEy" kung="FoO"></note> but end_tag_handlers => { _all_ doesn't get called at all

    so nothing gets flushed until the whole tree is parsed

    Is this by design of end_tag_handlers?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://938961]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (8)
As of 2015-07-29 09:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (263 votes), past polls