in reply to Replacing an XPath node with the value of its content
hth#!/usr/bin/perl use strict; use warnings; use XML::Twig; my $twig= XML::Twig->new( pretty_print => 'indented', twig_roots => { 'tm' => 1 }, twig_print_outside_roots => 1, twig_handlers => { tm=>sub{my $text = $_->te +xt(); $_->cut();print $text; }, }, ); $twig->parse('<?xml version="1.0"?><stats><tm tmclass="ibm" tmowner="I +BM Corporation" tmtype="reg" trademark="AIX">AIX</tm></stats>');
#declare a global: my $only_one=0; #same as before, then: twig_handlers => { tm=>sub{my $text = $_->text(); $only_one ? $_-> +cut() : ( $_->cut() and print $text and $only_one++ ) }, __DATA__ <?xml version="1.0"?> <stats> <tm tmclass="ibm" tmowner="IBM Corporation" tmtype=" +reg" trademark="AIX">AIX</tm> <tm tmclass="ibm" tmowner="IBM Corporation" tmtype=" +reg" trademark="AIX">AIX</tm> <tm tmclass="ibm" tmowner="IBM Corporation" tmtype=" +reg" trademark="AIX">AIX</tm> </stats>' __OUTPUT__ <?xml version="1.0"?> <stats> AIX </stats>
|
|---|