Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
I need help to convert the source format file to target format file, content detailed below:
Source
<businesses> <entity name="Retail"> <description>Products and items available in retail</description +> <product min="0" max="3"> <description>Product information</description> <item name="Title"> <description>Title</description> <text maxlength="80" size="65" /> </item> </product> </entity> <item name="Patrol"> <description>Title</description> <text maxlength="80" size="65" /> </item> <entity name="Sports"> <description>Sports Items</description> <product min="0" max="3"> <item name="Title"> <description>Title</description> <text maxlength="80" size="65" /> </item> </product> </entity> </businesses>
Target
<businesses> <block name="Retail" min="0" max="3"> <description>Products and items available in retail</description +> <description>Product information</description> <item name="Title"> <description>Title</description> <text maxlength="80" size="65" /> </item> </block> <item name="Patrol"> <description>Title</description> <text maxlength="80" size="65" /> </item> <block name="Sports" min="0" max="3"> <description>Sports Items</description> <item name="Title"> <description>Title</description> <text maxlength="80" size="65" /> </item> </block> </businesses>
This is the code snippet attempting the conversion.
It converts the begining tags(e.g cited below) for the first instance (conversion must happen at every occurance)
<entity name="Retail"> <description>Products and items available in retail</description +> <product min="0" max="3">
To
<block name="Retail" min="0" max="3"> <description>Products and items available in retail</description +>
Also the corresponding end tags need to be replaces as below
</product> </entity>
To
</block>
Please Advice.
########### Process the Input string ############ my $replstr ="<block "; ## The $strFile holds the source string if($strFile =~ m/<product (.*)?>/) { $range_rep = $1; $strFile =~ m/<product [^>]+>/; $str2relpace = "$`$&"; # This is the string to be replaced if($str2relpace =~ m/<\/(.*)?></) { $matchStr = "$'"; }else { $matchStr =$str2relpace; } if($` =~ m/<description>.*<\/description>/) { $desc = $&; } $desc = "\n".$desc if($desc); $` =~ m/<item (.*)?>/; $elementName = $1; $eleVal=$1 if($elementName =~ m/\"(.*)\"/); # Constructing the replace string. $replstr .=$elementName." ".'location="'."$eleVal\" ". "$range_rep". +'>'; # This is the replacing string $strFile =~ s/\Q$matchStr\E/$replstr$desc/g; #$strFile =~ s/<\/product><\/entity>/<\/block>/ig; print "\n\n\n The output is ================= \n $strFile \n \n ==== +==============\n"; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: String Manipulation Help Required
by rev_1318 (Chaplain) on Jun 29, 2005 at 07:25 UTC | |
by holli (Abbot) on Jun 29, 2005 at 08:22 UTC | |
by blazar (Canon) on Jun 29, 2005 at 08:33 UTC | |
|
Re: String Manipulation Help Required
by gopalr (Priest) on Jun 29, 2005 at 07:44 UTC | |
by Anonymous Monk on Jun 29, 2005 at 09:21 UTC | |
|
Re: String Manipulation Help Required
by gellyfish (Monsignor) on Jun 29, 2005 at 11:01 UTC | |
|
Re: String Manipulation Help Required
by anonymized user 468275 (Curate) on Jun 29, 2005 at 07:19 UTC | |
|
Re: String Manipulation Help Required
by prasadbabu (Prior) on Jun 29, 2005 at 07:22 UTC |