in reply to Re: problem using XML Twig
in thread problem using XML Twig

Hello Monks,
Sorry i made small mistake, pls check my code now.
Using xml twig, I am trying to supply two elements in a line with the separator tab.
Ex:
<c> <dl> ABC CDE add eerwe sdfsdfs erewrwe </dl> </c>
Expected Result:
<c> <dl> <first>ABC</first><second>CDE</second> <first>add</first><second>eerwe</second> <first>sdfsdfs</first><second>erewrwe</second> </dl> </c> Obtained Result: <c> <dl> <first>ABC</first><second>CDE</second> <first>add</first><second>eerwe</second> <first>sdfsdfs</first><second>erewrwe</second>rwe </dl> </c>

i.e. After </second> some characters are repeating, that character count is equivalent to line count. If i give five lines between dl and /dl , then five characters are repeating. Can any one tell where am i going wrong? Code Used:
my $t = new XML::Twig( twig_handlers => { "c"=>\&process_root }, pretty_print =>'nice', )->parsefile("$ARGV[0]"); my $say=$t->sprint; print FOUT "$say"; sub process_root { my ($a,$b,$c)=@_; my $bchild; for $bchild ($b->children) { if ($bchild->tag eq 'dl') { $bchild=&dl($a,$bchild); } } return $b; } sub dl { my ($a,$b,$c)=@_; my $bchild; for $bchild ($b->children) { if ($bchild->text) { $bchild->subs_text( qr{(.+?)\t(.+?)\n},'&elt(first=>{},$1)&elt(second=>{},$2)'); } return $b; } }
Thanks in advance, -Anonymous user-

Replies are listed 'Best First'.
Re^3: problem using XML Twig
by Roger (Parson) on Sep 29, 2004 at 11:16 UTC
    Looks like you still haven't fixed your dl function yet???

    I amended the code as below and got the expected results:
    ... sub dl { my ($a,$bchild) = @_; if ($bchild->text) { $bchild->subs_text( qr{(.+?)\t(.+?)\n},'&elt(first=>{},$1)&elt(second=>{},$2)'); } return $b; }