我有很多XML文件,并获得如下文件名:
[FileName,PathName] = uigetfile('*.xml','MultiSelect','on');
我想使用以下代码阅读这些文件:
for i=1:length(fullfile(FileName))
xtree(i) = xmlread(char(fullfile(FileName(i))));
但是我收到了一个错误。它适用于单个XML文件:
xtree = xmlread(char(fullfile(FileName)));
答案 0 :(得分:1)
您没有正确使用单元格数组。你知道它们是什么吗?在Matlab中输入help cell
以了解更多信息。
基本上,这里发生的是uigetfile
输出名为FileName
的文件名的单元格数组。您可以通过curcly-brace索引({}
)访问每个文件名。
同样,每个节点都是一个特殊的对象,普通的Marlab数组无法正确捕获它。您最好将xtree
定义为单元格数组,并使用花括号再次分配xmlread
的输出。
另外:当读取用户在运行时输入的文件时,总是更好地广泛检查错误。
总结:
[FileName,PathName] = uigetfile('*.m','MultiSelect','on');
if isequal(FileName,0) || isequal(PathName,0)
error('Cancel pressed.');
else
xtree = cell(size(FileName));
for i=1:numel(FileName)
try
xtree{i} = xmlread(fullfile([PathName FileName{i}]));
catch ME
%# handle error
end
end
end