1

我有很多 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)));
4

1 回答 1

1

您没有正确使用元胞数组。你知道它们是什么吗?输入help cellMatlab 以了解更多信息。

基本上,这里发生的是uigetfile输出一个名为FileName. 您可以通过大括号索引 ( {}) 访问每个文件名。

同样,每个节点都是一个特殊的对象,普通的 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
于 2012-08-30T06:37:53.870 回答