Scilab Function
eng - fr


put_xml_param2 - update description of parameters in xml file

Library

Calling Sequence

new_tt = put_xml_param2(txt_list,filen)

Parameters

File content


//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 

Authors

IRCOM Group Alan Layec