function subtree = branch(tree,uid) % XMLTREE/BRANCH Branch Method % FORMAT uid = parent(tree,uid) % % tree - XMLTree object % uid - UID of the root element of the subtree % subtree - XMLTree object (a subtree from tree) %__________________________________________________________________________ % % Return a subtree from a tree. %__________________________________________________________________________ % Copyright (C) 2002-2011 http://www.artefact.tk/ % Guillaume Flandin % $Id: branch.m 4460 2011-09-05 14:52:16Z guillaume $ %error(nargchk(2,2,nargin)); if uid > length(tree) || ... numel(uid)~=1 || ... ~strcmp(tree.tree{uid}.type,'element') error('[XMLTree] Invalid UID.'); end subtree = xmltree; subtree = set(subtree,root(subtree),'name',tree.tree{uid}.name); %- fix by Piotr Dollar to copy attributes for the root node: subtree = set(subtree,root(subtree),'attributes',tree.tree{uid}.attributes); child = children(tree,uid); for i=1:length(child) l = length(subtree); subtree = sub_branch(tree,subtree,child(i),root(subtree)); subtree.tree{root(subtree)}.contents = [subtree.tree{root(subtree)}.contents l+1]; end %========================================================================== function tree = sub_branch(t,tree,uid,p) l = length(tree); tree.tree{l+1} = t.tree{uid}; tree.tree{l+1}.uid = l + 1; tree.tree{l+1}.parent = p; tree.tree{l+1}.contents = []; if isfield(t.tree{uid},'contents') contents = get(t,uid,'contents'); m = length(tree); for i=1:length(contents) tree.tree{l+1}.contents = [tree.tree{l+1}.contents m+1]; tree = sub_branch(t,tree,contents(i),l+1); m = length(tree); end end