[723] | 1 | function tree = xmltree(varargin) |
---|
| 2 | % XMLTREE/XMLTREE Constructor of the XMLTree class |
---|
| 3 | % FORMAT tree = xmltree(varargin) |
---|
| 4 | % |
---|
[821] | 5 | % varargin - XML filename or XML string |
---|
[723] | 6 | % tree - XMLTree Object |
---|
| 7 | % |
---|
[821] | 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 |
---|
[723] | 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}) |
---|
[821] | 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 |
---|
[723] | 51 | tree = class(tree,'xmltree'); |
---|
| 52 | else |
---|
| 53 | error('[XMLTree] Bad input argument'); |
---|
| 54 | end |
---|
| 55 | otherwise |
---|
[821] | 56 | error('[XMLTree] Too many input arguments'); |
---|
[723] | 57 | end |
---|