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 | % @(#)flush.m Guillaume Flandin 02/04/10 |
---|
13 | |
---|
14 | error(nargchk(1,2,nargin)); |
---|
15 | |
---|
16 | if nargin == 1, |
---|
17 | uid = root(tree); |
---|
18 | end |
---|
19 | |
---|
20 | uid = uid(:); |
---|
21 | for i=1:length(uid) |
---|
22 | tree = sub_flush(tree,uid(i)); |
---|
23 | end |
---|
24 | |
---|
25 | %======================================================================= |
---|
26 | function tree = sub_flush(tree,uid) |
---|
27 | if isfield(tree.tree{uid},'contents') |
---|
28 | % contents is parsed in reverse order because each child is |
---|
29 | % deleted and the contents vector is then eventually reduced |
---|
30 | for i=length(tree.tree{uid}.contents):-1:1 |
---|
31 | tree = sub_flush(tree,tree.tree{uid}.contents(i)); |
---|
32 | end |
---|
33 | end |
---|
34 | if strcmp(tree.tree{uid}.type,'chardata') |... |
---|
35 | strcmp(tree.tree{uid}.type,'pi') |... |
---|
36 | strcmp(tree.tree{uid}.type,'cdata') |... |
---|
37 | strcmp(tree.tree{uid}.type,'comment') |
---|
38 | tree = delete(tree,uid); |
---|
39 | end |
---|