| | function varargout = attributes(varargin) |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| |
|
| |
|
| | |
| |
|
| | tree = varargin{1}; |
| | if ~ischar(varargin{2}) || ... |
| | ~any(strcmp(varargin{2},{'set','get','add','del','length'})) |
| | error('[XMLTree] Unknown method.'); |
| | end |
| | uid = varargin{3}; |
| | if ~isa(uid,'double') || any(uid>length(tree)) || any(uid<1) |
| | error('[XMLTree] UID must be a positive integer scalar.'); |
| | end |
| |
|
| | if ~strcmp(tree.tree{uid}.type,'element') |
| | error('[XMLTree] This node has no attributes.'); |
| | end |
| |
|
| | switch varargin{2} |
| | case 'set' |
| | |
| | if ~isa(varargin{4},'double') || ... |
| | any(varargin{4}>length(tree.tree{uid}.attributes)) || ... |
| | any(varargin{4}<1) |
| | error('[XMLTree] Invalid attribute indice.'); |
| | end |
| | ind = varargin{4}; |
| | tree.tree{uid}.attributes{ind} = struct('key',varargin{5},'val',varargin{6}); |
| | varargout{1} = tree; |
| | case 'get' |
| | |
| | if nargin == 4 |
| | if ischar(varargin{4}) |
| | for i=1:length(tree.tree{uid}.attributes) |
| | if strcmp(varargin{4},tree.tree{uid}.attributes{i}.key) |
| | varargout{1} = tree.tree{uid}.attributes{i}.val; |
| | return; |
| | end |
| | end |
| | varargout{1} = []; |
| | elseif ~isa(varargin{4},'double') || ... |
| | any(varargin{4}>length(tree.tree{uid}.attributes)) || ... |
| | any(varargin{4}<1) |
| | error('[XMLTree] Invalid attribute indice.'); |
| | else |
| | if length(varargin{4}) == 1 |
| | varargout{1} = tree.tree{uid}.attributes{varargin{4}(1)}; |
| | else |
| | varargout{1} = {}; |
| | for i=1:length(varargin{4}) |
| | varargout{1}{i} = tree.tree{uid}.attributes{varargin{4}(i)}; |
| | end |
| | end |
| | end |
| | else |
| | if length(tree.tree{uid}.attributes) == 1 |
| | varargout{1} = tree.tree{uid}.attributes{1}; |
| | else |
| | varargout{1} = {}; |
| | for i=1:length(tree.tree{uid}.attributes) |
| | varargout{1}{i} = tree.tree{uid}.attributes{i}; |
| | end |
| | end |
| | end |
| | case 'add' |
| | |
| | ind = length(tree.tree{uid}.attributes) + 1; |
| | tree.tree{uid}.attributes{ind} = struct('key',varargin{4},'val',varargin{5}); |
| | varargout{1} = tree; |
| | case 'del' |
| | |
| | if nargin == 4 |
| | if ~isa(varargin{4},'double') || ... |
| | any(varargin{4}>length(tree.tree{uid}.attributes)) || ... |
| | any(varargin{4}<1) |
| | error('[XMLTree] Invalid attribute indice.'); |
| | end |
| | ind = varargin{4}; |
| | tree.tree{uid}.attributes(ind) = []; |
| | else |
| | tree.tree{uid}.attributes = []; |
| | end |
| | varargout{1} = tree; |
| | case 'length' |
| | |
| | varargout{1} = length(tree.tree{uid}.attributes); |
| | otherwise |
| | error('[XMLTree] Unknown method.'); |
| | end |
| |
|