Ignore:
Timestamp:
Feb 17, 2016, 12:52:48 PM (8 years ago)
Author:
sommeria
Message:

xmltree updated

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/@xmltree/attributes.m

    r821 r925  
    1313%
    1414%     tree = attributes(tree,'set',uid,n,key,val)
    15 %         attr = attributes(tree,'get',uid[,n])
    16 %         tree = attributes(tree,'add',uid,key,val)
    17 %         tree = attributes(tree,'del',uid[,n])
    18 %         l    = attributes(tree,'length',uid)
    19 %_______________________________________________________________________
     15%     attr = attributes(tree,'get',uid[,n])
     16%     tree = attributes(tree,'add',uid,key,val)
     17%     tree = attributes(tree,'del',uid[,n])
     18%     l    = attributes(tree,'length',uid)
     19%__________________________________________________________________________
    2020%
    2121% Handle attributes of an element node.
    2222% The tree parameter must be in input AND in output for 'set', 'add' and
    2323% 'del' methods.
    24 %_______________________________________________________________________
    25 % @(#)attributes.m               Guillaume Flandin             02/04/05
     24%__________________________________________________________________________
     25% Copyright (C) 2002-2011  http://www.artefact.tk/
    2626
    27 error(nargchk(3,6,nargin));
     27% Guillaume Flandin
     28% $Id: attributes.m 4460 2011-09-05 14:52:16Z guillaume $
     29
     30
     31%error(nargchk(3,6,nargin));
     32
    2833tree = varargin{1};
    29 if ~ischar(varargin{2}) | ...
     34if ~ischar(varargin{2}) || ...
    3035   ~any(strcmp(varargin{2},{'set','get','add','del','length'}))
    31         error('[XMLTree] Unknown method.');
     36    error('[XMLTree] Unknown method.');
    3237end
    3338uid = varargin{3};
    34 if ~isa(uid,'double') | any(uid>length(tree)) | any(uid<1)
    35         error('[XMLTree] UID must be a positive integer scalar.');
     39if ~isa(uid,'double') || any(uid>length(tree)) || any(uid<1)
     40    error('[XMLTree] UID must be a positive integer scalar.');
    3641end
    3742
    3843if ~strcmp(tree.tree{uid}.type,'element')
    39         error('[XMLTree] This node has no attributes.');
     44    error('[XMLTree] This node has no attributes.');
    4045end
    4146
    4247switch varargin{2}
    43         case 'set'
    44                 error(nargchk(6,6,nargin));
    45                 if ~isa(varargin{4},'double') | ...
    46                    any(varargin{4}>length(tree.tree{uid}.attributes)) | ...
    47                    any(varargin{4}<1)
    48                         error('[XMLTree] Invalid attribute indice.');
    49                 end
    50                 ind = varargin{4};
    51                 tree.tree{uid}.attributes{ind} = struct('key',varargin{5},'val',varargin{6});
    52                 varargout{1} = tree;
    53         case 'get'
    54                 error(nargchk(3,4,nargin));
    55                 if nargin == 4
    56                         if ischar(varargin{4})
    57                                 for i=1:length(tree.tree{uid}.attributes)
    58                                         if strcmp(varargin{4},tree.tree{uid}.attributes{i}.key)
    59                                                 varargout{1} = tree.tree{uid}.attributes{i}.val;
    60                                                 return;
    61                                         end
    62                                 end
    63                                 varargout{1} = [];
    64                         elseif ~isa(varargin{4},'double') | ...
    65                            any(varargin{4}>length(tree.tree{uid}.attributes)) | ...
    66                            any(varargin{4}<1)
    67                                 error('[XMLTree] Invalid attribute indice.');
    68                         else
    69                                 if length(varargin{4}) == 1
    70                                         varargout{1} = tree.tree{uid}.attributes{varargin{4}(1)};
    71                                 else
    72                                         varargout{1} = {};
    73                                         for i=1:length(varargin{4})
    74                                                 varargout{1}{i} = tree.tree{uid}.attributes{varargin{4}(i)};
    75                                         end
    76                                 end
    77                         end
    78                 else
    79                         if length(tree.tree{uid}.attributes) == 1
    80                                 varargout{1} = tree.tree{uid}.attributes{1};
    81                         else
    82                                 varargout{1} = {};
    83                                 for i=1:length(tree.tree{uid}.attributes)
    84                                         varargout{1}{i} = tree.tree{uid}.attributes{i};
    85                                 end
    86                         end
    87                 end
    88         case 'add'
    89                 error(nargchk(5,5,nargin));
    90                 ind = length(tree.tree{uid}.attributes) + 1;
    91                 tree.tree{uid}.attributes{ind} = struct('key',varargin{4},'val',varargin{5});
    92                 varargout{1} = tree;
    93         case 'del'
    94                 error(nargchk(3,4,nargin));
    95                 if nargin == 4
    96                         if ~isa(varargin{4},'double') | ...
    97                       any(varargin{4}>length(tree.tree{uid}.attributes)) | ...
    98                       any(varargin{4}<1)
    99                                 error('[XMLTree] Invalid attribute indice.');
    100                         end
    101                         ind = varargin{4};
    102                         tree.tree{uid}.attributes(ind) = [];
    103                 else
    104                         tree.tree{uid}.attributes = [];
    105                 end
    106                 varargout{1} = tree;
    107         case 'length'
    108                 error(nargchk(3,3,nargin));
    109                 varargout{1} = length(tree.tree{uid}.attributes);
    110         otherwise
    111                 error('[XMLTree] Unknown method.');
     48    case 'set'
     49        %error(nargchk(6,6,nargin));
     50        if ~isa(varargin{4},'double') || ...
     51           any(varargin{4}>length(tree.tree{uid}.attributes)) || ...
     52           any(varargin{4}<1)
     53            error('[XMLTree] Invalid attribute indice.');
     54        end
     55        ind = varargin{4};
     56        tree.tree{uid}.attributes{ind} = struct('key',varargin{5},'val',varargin{6});
     57        varargout{1} = tree;
     58    case 'get'
     59        %error(nargchk(3,4,nargin));
     60        if nargin == 4
     61            if ischar(varargin{4})
     62                for i=1:length(tree.tree{uid}.attributes)
     63                    if strcmp(varargin{4},tree.tree{uid}.attributes{i}.key)
     64                        varargout{1} = tree.tree{uid}.attributes{i}.val;
     65                        return;
     66                    end
     67                end
     68                varargout{1} = [];
     69            elseif ~isa(varargin{4},'double') || ...
     70               any(varargin{4}>length(tree.tree{uid}.attributes)) || ...
     71               any(varargin{4}<1)
     72                error('[XMLTree] Invalid attribute indice.');
     73            else
     74                if length(varargin{4}) == 1
     75                    varargout{1} = tree.tree{uid}.attributes{varargin{4}(1)};
     76                else
     77                    varargout{1} = {};
     78                    for i=1:length(varargin{4})
     79                        varargout{1}{i} = tree.tree{uid}.attributes{varargin{4}(i)};
     80                    end
     81                end
     82            end
     83        else
     84            if length(tree.tree{uid}.attributes) == 1
     85                varargout{1} = tree.tree{uid}.attributes{1};
     86            else
     87                varargout{1} = {};
     88                for i=1:length(tree.tree{uid}.attributes)
     89                    varargout{1}{i} = tree.tree{uid}.attributes{i};
     90                end
     91            end
     92        end
     93    case 'add'
     94        %error(nargchk(5,5,nargin));
     95        ind = length(tree.tree{uid}.attributes) + 1;
     96        tree.tree{uid}.attributes{ind} = struct('key',varargin{4},'val',varargin{5});
     97        varargout{1} = tree;
     98    case 'del'
     99        %error(nargchk(3,4,nargin));
     100        if nargin == 4
     101            if ~isa(varargin{4},'double') || ...
     102              any(varargin{4}>length(tree.tree{uid}.attributes)) || ...
     103              any(varargin{4}<1)
     104                error('[XMLTree] Invalid attribute indice.');
     105            end
     106            ind = varargin{4};
     107            tree.tree{uid}.attributes(ind) = [];
     108        else
     109            tree.tree{uid}.attributes = [];
     110        end
     111        varargout{1} = tree;
     112    case 'length'
     113        %error(nargchk(3,3,nargin));
     114        varargout{1} = length(tree.tree{uid}.attributes);
     115    otherwise
     116        error('[XMLTree] Unknown method.');
    112117end
Note: See TracChangeset for help on using the changeset viewer.