function structure = readxml(n) filename=file_in_path(path,n); f=fopen(filename,'r'); dummy=fgetl(f); if (regexp(dummy,'^ on a line would meaning 'closing a level'. % if this is not a line only, it is % also a , so do props and values openingtag = strsplit(line,'[<>]'); tagelements = strsplit(openingtag{2},' '); tagelements = strrep(tagelements,':','_'); child=sprintf('%s.%s',parent,tagelements{1}) childstring=sprintf('%s',tagelements{1}) % need as a string as $2 for isfield() %printf(' child: %s\n',tagelements{1}); %printf(' parent : %s\n',parent); %printf(' isfield : '); isfield(parent,childstring) if (isfield(parent,childstring)) teststring=sprintf('noelements=size(%s)(1)',child) eval(teststring) n+=noelements; n else n=1; endif eval(sprintf('%s{%g}=[]',child,n)) for l=2:length(tagelements) eval(sprintf('%s.props.%s=%s',child,strsplit(tagelements{l},'='){1},strsplit(tagelements{l},'='){2})); endfor endif child=assign_value_to_tag(f,parent,line,child); eval(sprintf('%s="%s"','tmp',parent)) endfunction function valout=assign_value_to_tag(f,parent,line,tag) if( length(regexp(line,'<')) > 1 ) value=regexprep(line,'.*>(.*)<.*','$1'); valuestring=sprintf('%s.%s="%s"',tag,'value',value) eval(valuestring) assign_tag_to_parent(f,parent) else assign_tag_to_parent(f,tag) endif eval(sprintf('%s=%s','valout',tag)) endfunction