• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 218
  • Last Modified:

Tags again

I need a script that will close specific tags in an xml script.


I had a script which is below that kind of works but it skips every second tag. I'm not sure why.


#! /usr/local/bin/perl -w

while (<>) {
   if((/<([^>]*)>/) && (!$inTag)) {
       $inTag = 1;
       $startTag = $1;
   }
   elsif(/<([^>]*)>/) {
       print "</$startTag>\n";
       $inTag = 0;
   }
   print;
}





The xml file looks like this:

<hockey>

The Toronto Maple leafs scored 3-0 in their final game to win the series.

How will Toronto do in the next round?

Any comments are welcome.

<baseball>
</baseball>





Should look like this:

<hockey>

The Toronto Maple leafs scored 3-0 in their final game to win the series.

How will Toronto do in the next round?

Any comments are welcome.
</hockey>

<baseball>
</baseball>  
0
2xdafun
Asked:
2xdafun
1 Solution
 
ozoCommented:
while( <> ){
    if( /<\/\Q$startTag\E>/i ){
        $startTag = '';
    }elsif( /<([^\/>][^>]*)>/ ){
        print "<\/$startTag>\n\n" if $startTag;
        $startTag = $1;
    }
    print;
}
print "<\/$startTag>\n\n" if $startTag;

0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now