I'm writing a perl script where I need to separate the XML(datamod) into two XML files.
Posting the perl snippet here for reference purposes<Root> <Top> <Module name="ALU"> <input name="po_ctrl"/> <bidirection name="add"/> </Module> <Module name="Po_ctrl"> <input name="ctrl"/> <output name="ctrlbus"/> <bidirection name="add"/> </Module> <input name="add"/> <input name="clk"/> <input name="da_in"/> <output name="da_out"/> <bidirection name="ctrl"/> </Root> </Top>
open(IN_FILE, "<datamod.xml") or die "Cant open input file"; open(TM1_FILE, ">tm1.xml") or die "Cant Open tm1.xml"; open(TM2_FILE, ">tm2.xml") or die "Cant Open tm2.xml"; my $chk = 0; while(my $line = <IN_FILE>){ $line =~ s/^\s+//; @xwords = split(" ",$line); if($xwords[0] ne "<Module" and $xwords[0] ne "</Module>" and $chk == +0) { print TM1_FILE $line; } else { print TM2_FILE $line; $chk = 1; } if($xwords[0] eq "</Module>" and $chk == 1) { $chk = 0; } } close TM1_FILE; close TM2_FILE;
Expected files
Temp file 1:
<Root> <Top> <input name="add"/> <input name="clk"/> <input name="da_in"/> <output name="da_out"/> <bidirection name="ctrl"/> </Top> </Root>
Temp File 2
<Root> <Top> <Module name="ALU"> <input name="po_ctrl"/> <bidirection name="add"/> </Module> <Module name="Po_ctrl"> <input name="ctrl"/> <output name="ctrlbus"/> <bidirection name="add"/> </Module> </Root> </Top>
NOTE: I'm using the XML::Simple module because the Perl script is written in it and it's tedious to convert to any other XML module.
Any help is appreciated, kindly post the rewritten snippet!
In reply to Separate a single xml into mulitple XML using perl by gr.d
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |