Matab 讀取修改 XML

項目需要在matlab中讀取多個點數據文件,爲了更好管理多個文件,定義了一個XML文件。格式如下:

<?xml version="1.0" encoding="utf-8"?>
<scan>
   <name>分三次掃描</name>
   <robot>機器人</robot>
   <workpiece>葉片</workpiece>
   <data angle="30" md5="a41d85fb08a42c7c8f512f7a1139a112" src="html\test.html"/>
   <data angle="40" md5="58dcc9450ddafcee5be2f9fef7b070e3" src="html\xml_tutorial_script.html"/>
   <data angle="60" md5="016946d9cc65deb9dcdf0fca3520e57f" src="html\xml_tutorial_script_01.png"/>
   
</scan>

每個data標籤就是一個掃描的點雲文件。md5屬性用於驗證文件是否被篡改。

Matlab自帶的XML函數比較麻煩,使用了一個第三方xml_read/xml_write。地址(https://ww2.mathworks.cn/matlabcentral/mlc-downloads/downloads/submissions/12907/versions/14/download/zip/xml_io_tools_2010_11_05.zip

​
scaninfo = xml_read('\scan.xml');
disp(['Scan Name-:',scaninfo.name]);

//遍歷data元素
datas=size(scaninfo.data);
for n=1:datas
	 
	sprintf('Current is %d ',n)
    //判斷結構體是否存在angle字段
	if isfield(scaninfo.data(n).ATTRIBUTE,'angle')         
		disp(scaninfo.data(n).ATTRIBUTE.angle);   
    end
    if isfield(scaninfo.data(n).ATTRIBUTE,'md5')         
		disp(scaninfo.data(n).ATTRIBUTE.md5);   
    end
    
    if isfield(scaninfo.data(n).ATTRIBUTE,'src')         
		fileName=(scaninfo.data(n).ATTRIBUTE.src);  
        DataHash(fileName,'MD5','file')
        //修改屬性值
        scaninfo.data(n).ATTRIBUTE.md5 = DataHash(fileName,'MD5','file')
    end
    
end

//新增節點
newNode=struct;
newNode.CONTENT='That''s all!';
newNode.ATTRIBUTE.angle='2:00';
newNode.ATTRIBUTE.src='test.jpg;
scaninfo.data(end+1)=newNode;

wPref.StructItem = false
xml_write('regular_output.xml',scaninfo,'scan',wPref)

​

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章