[925] | 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 | % Copyright (C) 2002-2011 http://www.artefact.tk/
|
---|
| 20 |
|
---|
| 21 | % Guillaume Flandin
|
---|
| 22 | % $Id: xmltree.m 4460 2011-09-05 14:52:16Z guillaume $
|
---|
| 23 |
|
---|
| 24 | switch(nargin)
|
---|
| 25 | case 0
|
---|
| 26 | tree.tree{1} = struct('type','element',...
|
---|
| 27 | 'name','tag',...
|
---|
| 28 | 'attributes',[],...
|
---|
| 29 | 'contents',[],...
|
---|
| 30 | 'parent',[],...
|
---|
| 31 | 'uid',1);
|
---|
| 32 | tree.filename = '';
|
---|
| 33 | tree = class(tree,'xmltree');
|
---|
| 34 | case 1
|
---|
| 35 | if isa(varargin{1},'xmltree')
|
---|
| 36 | tree = varargin{1};
|
---|
| 37 | elseif ischar(varargin{1})
|
---|
| 38 | % Input argument is an XML string
|
---|
| 39 | if (~exist(varargin{1},'file') && ...
|
---|
[1095] | 40 | ~isempty(xml_findstr(varargin{1},'<',1,1)))
|
---|
[925] | 41 | tree.tree = xml_parser(varargin{1});
|
---|
| 42 | tree.filename = '';
|
---|
[1095] | 43 | % Input argument is an XML filename
|
---|
[925] | 44 | else
|
---|
[1095] | 45 | if isempty(regexp(varargin{1},'^http://'))%ordinary file (not OpenDAP)
|
---|
| 46 | fid = fopen(varargin{1},'rt');
|
---|
| 47 | if (fid == -1)
|
---|
| 48 | error(['[XMLTree] Cannot open ' varargin{1}]);
|
---|
| 49 | end
|
---|
| 50 | xmlstr = fread(fid,'*char')';
|
---|
| 51 | %xmlstr = fscanf(fid,'%c');
|
---|
| 52 | fclose(fid);
|
---|
| 53 | else
|
---|
| 54 | xmlstr=webread(varargin{1});%OpenDAP case
|
---|
[925] | 55 | end
|
---|
| 56 | tree.tree = xml_parser(xmlstr);
|
---|
[1095] | 57 | tree.filename = varargin{1};
|
---|
[925] | 58 | end
|
---|
| 59 | tree = class(tree,'xmltree');
|
---|
[1095] | 60 | else
|
---|
[925] | 61 | error('[XMLTree] Bad input argument');
|
---|
| 62 | end
|
---|
| 63 | otherwise
|
---|
| 64 | error('[XMLTree] Too many input arguments');
|
---|
| 65 | end
|
---|