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)

​
发布了22 篇原创文章 · 获赞 4 · 访问量 4833

猜你喜欢

转载自blog.csdn.net/guo1wu3shi4/article/details/104346196