put_xml_param2 - update description of parameters in xml file
new_tt = put_xml_param2(txt_list,filen)
- txt_list : list
- list_txt() : integer. indentation level
- list_txt()(1) : integer. id of parameter
- list_txt()(2) : matrix of string of size(n,2)
- list_txt()(2)(,1) : string. name of parameter
- list_txt()(2)(,2) : string. description of parameter
- filen : string. target XML file (path+name)
- new_tt : vector of strings. the text of the new XML file
//put_xml_param
//Fonction qui insère une liste de paramètres
//dans un fichier xml contenant des délimiteurs
//<PARAM> et </PARAM>
//Entrée : txt : matrice de chaînes de caractères de taille n,2
// txt(,1) : le nom du paramètre
// txt(,2) : la description du paramètre
// filen : nom du fichier xml (ex:filen=xml_path+'CAN_f.xml')
//Sortie : new_tt : texte du fichier xml de sortie
//Rmq : ce code est incompréhensible et est trop compliqué.
function new_tt=put_xml_param2(txt_list,filen)
if fileinfo(filen)<>[] then
//if size(txt,2)==2 then
del1='<PARAM>'
del2='</PARAM>'
tt_sav=mgetl(filen);
a=0;b=0;new_tt=tt_sav;
//trouve la position des délimiteurs
for i=1:size(tt_sav,1)
if strindex(tt_sav(i),del1)<>[] then a=i, end;
if strindex(tt_sav(i),del2)<>[] then b=i, end;
end
if a<>0&b<>0 then
if txt_list<>list() then
nb_indent=size(txt_list);
nb_param=0
for i=1:size(txt_list)
nb_param=nb_param+size(txt_list(i)(2),1);
end
//Creation d'un nouvelle liste
param_list=list();
for i=1:nb_param
param_list(i)=list();
param_list(i)=[];
end
//Remplissage de la liste
i=nb_indent;
for i=nb_indent:-1:2
for j=1:size(txt_list(i)(1),1)
//Premier élément de la liste
if j==1 then
param_list(txt_list(i)(1)(j))=['<PARAM_INDENT>';
'<PARAM_ITEM>';'<PARAM_NAME>'+txt_list(i)(2)(j,1)+'</PARAM_NAME>';
'<PARAM_DESCRIPTION>';'<SP>';': '+txt_list(i)(2)(j,2);
'</SP>']
//cherche la postion de la fin de l'item
if param_list(txt_list(i)(1)(j)+1)==[] then
param_list(txt_list(i)(1)(j))=[param_list(txt_list(i)(1)(j));'</PARAM_DESCRIPTION>';'</PARAM_ITEM>';''];
else
zz=txt_list(i)(1)(j)+1;
while param_list(zz)<>[]
zz=zz+1;
if zz==nb_param+1 then break, end
end
param_list(zz-1)=[param_list(zz-1);'</PARAM_DESCRIPTION>';'</PARAM_ITEM>';''];
end
if size(txt_list(i)(1),1)==1 then
param_list(txt_list(i)(1)(j))=[param_list(txt_list(i)(1)(j));'</PARAM_INDENT>';''];
end
//Dernier élement de la liste
elseif j==size(txt_list(i)(1),1)
param_list(txt_list(i)(1)(j))=[
'<PARAM_ITEM>';'<PARAM_NAME>'+txt_list(i)(2)(j,1)+'</PARAM_NAME>';
'<PARAM_DESCRIPTION>';'<SP>';
': '+txt_list(i)(2)(j,2);
'</SP>';'</PARAM_DESCRIPTION>';'</PARAM_ITEM>';'</PARAM_INDENT>';''];
else
//Teste la discontinuité dans la liste
if txt_list(i)(1)(j)<>txt_list(i)(1)(j-1)+1 then
if param_list(txt_list(i)(1)(j-1)+1)==[] then
param_list(txt_list(i)(1)(j-1))=[param_list(txt_list(i)(1)(j-1));'</PARAM_INDENT>'];
else
zz=txt_list(i)(1)(j-1)+1;
while param_list(zz)<>[]
zz=zz+1;
if zz==nb_param+1 then break, end
end
param_list(zz-1)=[param_list(zz-1);'</PARAM_INDENT>'];
end
param_list(txt_list(i)(1)(j))=['<PARAM_INDENT>';
'<PARAM_ITEM>';'<PARAM_NAME>'+txt_list(i)(2)(j,1)+'</PARAM_NAME>';
'<PARAM_DESCRIPTION>';'<SP>';
': '+txt_list(i)(2)(j,2);
'</SP>']
if param_list(txt_list(i)(1)(j)+1)==[] then
param_list(txt_list(i)(1)(j))=[param_list(txt_list(i)(1)(j));'</PARAM_DESCRIPTION>';'</PARAM_ITEM>';''];
else
zz=txt_list(i)(1)(j)+1;
while param_list(zz)<>[]
zz=zz+1;
if zz==nb_param+1 then break, end
end
param_list(zz-1)=[param_list(zz-1);'</PARAM_DESCRIPTION>';'</PARAM_ITEM>';''];
end
else
param_list(txt_list(i)(1)(j))=[
'<PARAM_ITEM>';'<PARAM_NAME>'+txt_list(i)(2)(j,1)+'</PARAM_NAME>';
'<PARAM_DESCRIPTION>';'<SP>';
': '+txt_list(i)(2)(j,2);
'</SP>']
if param_list(txt_list(i)(1)(j)+1)==[] then
param_list(txt_list(i)(1)(j))=[param_list(txt_list(i)(1)(j));'</PARAM_DESCRIPTION>';'</PARAM_ITEM>';''];
else
zz=txt_list(i)(1)(j)+1;
while param_list(zz)<>[]
zz=zz+1;
if zz==nb_param+1 then break, end
end
param_list(zz-1)=[param_list(zz-1);'</PARAM_DESCRIPTION>';'</PARAM_ITEM>';''];
end
end
end
end
end
//pause
//Niveau 1
for i=1:size(txt_list(1)(1),1)
my_tt=['<PARAM_ITEM>';
'<PARAM_NAME>'+txt_list(1)(2)(i,1)+'</PARAM_NAME>';
'<PARAM_DESCRIPTION>';'<SP>';': '+txt_list(1)(2)(i,2);'</SP>'];
param_list(txt_list(1)(1)(i))=my_tt;
if i<=size(txt_list(1)(1),1) then
if (txt_list(1)(1)(i))<nb_param then
if param_list(txt_list(1)(1)(i)+1)==[] then
param_list(txt_list(1)(1)(i))=[param_list(txt_list(1)(1)(i));'</PARAM_DESCRIPTION>';'</PARAM_ITEM>';''];
else
zz=txt_list(1)(1)(i)+1;
while param_list(zz)<>[]
zz=zz+1;
if zz==nb_param+1 then break, end
end
param_list(zz-1)=[param_list(zz-1);'</PARAM_DESCRIPTION>';'</PARAM_ITEM>';''];
end
//pause
elseif (txt_list(1)(1)(i))==nb_param then
param_list(txt_list(1)(1)(i))=[param_list(txt_list(1)(1)(i));'</PARAM_DESCRIPTION>';'</PARAM_ITEM>';''];
end
end
end
//pause
//crée la chaine de texte des paramètres
tt_param=['<PARAM_INDENT>']
for i=1:nb_param
tt_param=[tt_param;param_list(i)];
end
tt_param=[tt_param;'</PARAM_INDENT>'];
else
tt_param=[];
end
//Ecrit la chaine de texte finale
new_tt=[tt_sav(1:a);tt_param;tt_sav(b:size(tt_sav,1))];
end
//else
//printf("Incompatible rsh variable\n");
//end
else
printf("File %s not found\n",filen);
new_tt=[];
end
endfunction
IRCOM Group
Alan Layec