1 | function tree = xmltree(varargin) |
---|
2 | % XMLTREE/XMLTREE Constructor of the XMLTree class |
---|
3 | % FORMAT tree = xmltree(varargin) |
---|
4 | % |
---|
5 | % varargin - XML filename or XML string |
---|
6 | % tree - XMLTree Object |
---|
7 | % |
---|
8 | % tree = xmltree; % creates a minimal XML tree: '<tag/>' |
---|
9 | % tree = xmltree('foo.xml'); % creates a tree from XML file 'foo.xml' |
---|
10 | % tree = xmltree('<tag>content</tag>') % creates a tree from string |
---|
11 | %_______________________________________________________________________ |
---|
12 | % |
---|
13 | % This is the constructor of the XMLTree class. |
---|
14 | % It creates a tree of an XML 1.0 file (after parsing) that is stored |
---|
15 | % using a Document Object Model (DOM) representation. |
---|
16 | % See http://www.w3.org/TR/REC-xml for details about XML 1.0. |
---|
17 | % See http://www.w3.org/DOM/ for details about DOM platform. |
---|
18 | %_______________________________________________________________________ |
---|
19 | % @(#)xmltree.m Guillaume Flandin 02/03/27 |
---|
20 | |
---|
21 | switch(nargin) |
---|
22 | case 0 |
---|
23 | tree.tree{1} = struct('type','element',... |
---|
24 | 'name','tag',... |
---|
25 | 'attributes',[],... |
---|
26 | 'contents',[],... |
---|
27 | 'parent',[],... |
---|
28 | 'uid',1); |
---|
29 | tree.filename = ''; |
---|
30 | tree = class(tree,'xmltree'); |
---|
31 | case 1 |
---|
32 | if isa(varargin{1},'xmltree') |
---|
33 | tree = varargin{1}; |
---|
34 | elseif ischar(varargin{1}) |
---|
35 | % Input argument is an XML string |
---|
36 | if (exist(varargin{1}) ~= 2 & ... |
---|
37 | ~isempty(xml_findstr(varargin{1},'<',1,1))) |
---|
38 | tree.tree = xml_parser(varargin{1}); |
---|
39 | tree.filename = ''; |
---|
40 | % Input argument is an XML filename |
---|
41 | else |
---|
42 | fid = fopen(varargin{1},'rt'); |
---|
43 | if (fid == -1) |
---|
44 | error(['[XMLTree] Cannot open ' varargin{1}]); |
---|
45 | end |
---|
46 | xmlstr = fscanf(fid,'%c'); |
---|
47 | fclose(fid); |
---|
48 | tree.tree = xml_parser(xmlstr); |
---|
49 | tree.filename = varargin{1}; |
---|
50 | end |
---|
51 | tree = class(tree,'xmltree'); |
---|
52 | else |
---|
53 | error('[XMLTree] Bad input argument'); |
---|
54 | end |
---|
55 | otherwise |
---|
56 | error('[XMLTree] Too many input arguments'); |
---|
57 | end |
---|