2012-08-30 54 views
1

我有很多的XML文件,並得到他們的文件名,像這樣:在MATLAB創建DOM對象的數組多個讀取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))); 

回答

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