[925] | 1 | function tree = flush(tree,uid)
|
---|
| 2 | % XMLTREE/FLUSH Flush (Clear a subtree given its UID)
|
---|
| 3 | %
|
---|
| 4 | % tree - XMLTree object
|
---|
| 5 | % uid - array of UID's of subtrees to be cleared
|
---|
| 6 | % Default is root
|
---|
| 7 | %__________________________________________________________________________
|
---|
| 8 | %
|
---|
| 9 | % Clear a subtree given its UID (remove all the leaves of the tree)
|
---|
| 10 | % The tree parameter must be in input AND in output
|
---|
| 11 | %__________________________________________________________________________
|
---|
| 12 | % Copyright (C) 2002-2011 http://www.artefact.tk/
|
---|
| 13 |
|
---|
| 14 | % Guillaume Flandin
|
---|
| 15 | % $Id: flush.m 4460 2011-09-05 14:52:16Z guillaume $
|
---|
| 16 |
|
---|
| 17 |
|
---|
| 18 | %error(nargchk(1,2,nargin));
|
---|
| 19 |
|
---|
| 20 | if nargin == 1,
|
---|
| 21 | uid = root(tree);
|
---|
| 22 | end
|
---|
| 23 |
|
---|
| 24 | uid = uid(:);
|
---|
| 25 | for i=1:length(uid)
|
---|
| 26 | tree = sub_flush(tree,uid(i));
|
---|
| 27 | end
|
---|
| 28 |
|
---|
| 29 | %==========================================================================
|
---|
| 30 | function tree = sub_flush(tree,uid)
|
---|
| 31 | if isfield(tree.tree{uid},'contents')
|
---|
| 32 | % contents is parsed in reverse order because each child is
|
---|
| 33 | % deleted and the contents vector is then eventually reduced
|
---|
| 34 | for i=length(tree.tree{uid}.contents):-1:1
|
---|
| 35 | tree = sub_flush(tree,tree.tree{uid}.contents(i));
|
---|
| 36 | end
|
---|
| 37 | end
|
---|
| 38 | if strcmp(tree.tree{uid}.type,'chardata') ||...
|
---|
| 39 | strcmp(tree.tree{uid}.type,'pi') ||...
|
---|
| 40 | strcmp(tree.tree{uid}.type,'cdata') ||...
|
---|
| 41 | strcmp(tree.tree{uid}.type,'comment')
|
---|
| 42 | tree = delete(tree,uid);
|
---|
| 43 | end
|
---|