1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
| #!/usr/bin/perl
use XML::Writer;
use IO::File;
my $output = new IO::File(">output.xml");
my $writer = new XML::Writer(
OUTPUT => $output,
DATA_INDENT => 3, # indentation, trois espaces
DATA_MODE => 1, # changement ligne.
ENCODING => 'utf-8',
);
my @tab = ("1 1 Chapter PURPOSE AND SCOPE OF THIS DOCUMENT (2420773) SectionID_3A13384E_8231_03d4_F7DC_7ECE6F383950",
"1.3 1.3 section Filter algorithm (2407920) SectionID_F9561D84_6EBC_541f_D920_36E3994FA2E0",
"1.4.3 1.4.3 section Shutdown Prevention (2587622) SectionID_C36D589D_5FFE_c735_AFE1_72125316EEB0",
"2 2 Chapter Context (2636865) SectionID_BAA32D7A_DFAD_df85_1ACF_E75EE6BCCBB1",
"2.1 2.1 section ASIL Level (2636867) SectionID_6E341872_E187_132e_E884_373E568CCBB8",
"3 3 Chapter Name as Black Box (2407873) SectionID_37B79FED_A551_2aee_F18C_BBA600798308");
my $xmiId;
my $name;
my $bFinTag = 0;
my $nbTagOuvert = 1;
my @tabNumParagraphe;
my $numParagraphe = '';
my $numParagrapheOld = '';
$writer->xmlDecl("UTF-8");
$writer->startTag("xmi:XMI",
"xmi:version" => "2.1",
"xmlns:uml" => "http://schema.omg.org/spec/UML/2.1",
"xmlns:xmi" => "http://schema.omg.org/spec/XMI/2.1",
"xmlns:thecustomprofile" => "http://www.sparxsystems.com/profiles/thecustomprofile/1.0");
$writer->emptyTag("xmi:Documentation",
"exporter" => "Enterprise Architect",
"exporterVersion" => "6.5");
$writer->startTag("uml:Model",
"xmi:type" => "uml:Model",
"name" => "EA_Model",
"visibility" => "public");
foreach(@tab){
$ligne = $_;
if($ligne =~ /(\d+(\.\d+)*)\s(.*)\sSectionID_(.*)/){
$xmiId = $3;
$name = $4;
@tabNumParagraphe = split('\.',$1);
$numParagraphe = $tabNumParagraphe[0];
if(($numParagrapheOld ne '') and ($numParagraphe > $numParagrapheOld)){
$bFinTag =1;
}
$numParagrapheOld = $numParagraphe;
}
if($bFinTag){
$writer->endTag("packagedElement") ;
$nbTagOuvert--;
for($i=1;$i<$nbTagOuvert;$i++){
$writer->endTag("packagedElement");
$nbTagOuvert--;
}
$bFinTag = 0;
}
$writer->startTag( "packagedElement",
"xmi:type" => "uml:Package",
"xmi:id" => "$xmiId",
"name" => "$name" );
$nbTagOuvert++;
}
for($i=1;$i<$nbTagOuvert;$i++){
$writer->endTag("packagedElement");
}
$writer->endTag("uml:Model");
$writer->endTag("xmi:XMI");
$writer->end();
$output->close(); |
Partager