use strict;
use warnings;
use XML::Twig;
use XML::XPath;
use XML::Twig::XPath;
my $twigrp = new XML::Twig::XPath( pretty_print => 'indented_c', # print format
keep_encoding => 1,
);
$twigrp->parse(\*DATA);
my %insbeforetag;
$insbeforetag{1} = [('//chbody//exercises/orderedlist/item/para', 'inst', '\t{{Num}\.\t')];
for my $row (keys %insbeforetag){
for ($twigrp->findnodes($insbeforetag{$row}->[0]))
{
my $min_elt= XML::Twig::Elt->new( $insbeforetag{$row}->[1] => $insbeforetag{$row}->[2]);
$min_elt->paste( before => $_);
}
}
$twigrp->print;
__DATA__
Content
- Text1
- Text2
- Text3
- Text1
- Text2
- Text3
- Text4
####
Content
-
\t{{Num}\.\t
Text1
-
\t{{Num}\.\t
Text2
-
\t{{Num}\.\t
Text3
-
\t{{Num}\.\t
Text1
-
\t{{Num}\.\t
Text2
-
\t{{Num}\.\t
Text3
-
\t{{Num}\.\t
Text4
##
##
Content
1. - Text1
2. - Text2
3. - Text3
1. - Text1
2. - Text2
3. - Text3
4. - Text4