0001 function writefile(DS, filename)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 import com.mathworks.xml.*;
0020
0021
0022
0023 xdoc = XMLUtils.createDocument('DataSet');
0024 xdoc.setVersion('1.0');
0025 xdoc.setEncoding('UTF-8');
0026
0027 S = struct(DS);
0028
0029
0030
0031
0032 docelem = xdoc.getDocumentElement;
0033 docelem.setAttribute('version', char(S.version));
0034 docelem.setAttribute('name', char(S.name));
0035 docelem.setAttribute('unit', char(S.unittype));
0036 docelem.setAttribute('format', char(S.format));
0037 if ~isempty(S.author)
0038 docelem.setAttribute('author', char(S.author));
0039 end
0040 if ~isempty(S.description)
0041 docelem.setAttribute('description', char(S.description));
0042 end
0043 if ~isempty(S.attribs)
0044 attrnames = fieldnames(S.attribs);
0045 nattrs = length(attrnames);
0046 for i = 1 : nattrs
0047 docelem.setAttribute(attrnames{i}, S.attribs.(attrnames{i}));
0048 end
0049 end
0050
0051
0052
0053
0054 switch S.unittype
0055 case 'Sample'
0056 n = length(S.units);
0057 for i = 1 : n
0058 docelem.appendChild(CreateSampleNode(xdoc, S.units(i)));
0059 end
0060
0061 case 'SampleGroup'
0062 n = length(S.units);
0063 for i = 1 : n
0064 docelem.appendChild(CreateSampleGroupNode(xdoc, S.units(i)));
0065 end
0066
0067 otherwise
0068 error('dsdml:invalidutype', ...
0069 'Invalid unit type %s', DS.unittype);
0070 end
0071
0072
0073
0074 xmlwrite(filename, xdoc);
0075
0076
0077
0078
0079
0080 function sampleNode = CreateSampleNode(xdoc, sample)
0081
0082 sampleNode = xdoc.createElement('Sample');
0083 sampleNode.setAttribute('class_id', int2str(sample.class_id));
0084 if ~isempty(sample.filename)
0085 sampleNode.setAttribute('filename', sample.filename);
0086 end
0087 if ~isempty(sample.attribs)
0088 attrnames = fieldnames(sample.attribs);
0089 nattrs = length(attrnames);
0090 for i = 1 : nattrs
0091 sampleNode.setAttribute(attrnames{i}, sample.attribs.(attrnames{i}));
0092 end
0093 end
0094
0095
0096 function groupNode = CreateSampleGroupNode(xdoc, grp)
0097
0098 groupNode = xdoc.createElement('SampleGroup');
0099 groupNode.setAttribute('class_id', int2str(grp.class_id));
0100 if ~isempty(grp.attribs)
0101 attrnames = fieldnames(grp.attribs);
0102 nattrs = length(attrnames);
0103 for i = 1 : nattrs
0104 sampleNode.setAttribute(attrnames{i}, grp.attribs.(attrnames{i}));
0105 end
0106 end
0107 nsamples = length(grp.samples);
0108 for i = 1 : nsamples
0109 groupNode.appendChild(CreateSampleNode(xdoc, grp.samples(i)));
0110 end
0111
0112
0113
0114
0115
0116