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
|
---|