matlab 修改xml文件的属性
2016-06-15 14:04
363 查看
本人不懂xml,经过别人帮助写出下面的程序,能用,有的地方可能我注释的不对
假设这是我们要修改的第一个xml文件,这里我们把<pose>的值 Unspecified 改成 <filename>值n02109961_1351的前9个字符n02109961
即 把Unspecified 改成n02109961
clc;
clear;
path = '/home/zc/py/data/VOCdevkit2007/VOC2007/Annotations'; %读取路径
path2 = '/home/zc/py/data/VOCdevkit2007/VOC2007/Annotations2'; %保存路径
str1 = strcat(path,'/','*.xml'); % 文件夹下的所有xml 文件
dirs = dir(str1);
n = size(dirs); %xml文件总数
for m = 1:n
name = dirs(m).name; %xml文件名
str2 = [path,'/',name];
str3 = [path2,'/',name];
xmlDoc = xmlread(str2); % 读取文件
%% Extract ID
IDArray = xmlDoc.getElementsByTagName('filename'); % 将 filename 节点放入数组IDArray
nodeContent = char(IDArray.item(0).getFirstChild.getData) % 提取当前节点的内容,即n02109961_1351
a = nodeContent(1:9); %取前九个字符 即 n02109961
%% extract the FDs
FDsArray = xmlDoc.getElementsByTagName('object'); % 将object 节点放入数组FDsArray
for i = 0 : FDsArray.getLength-1
thisItem = FDsArray.item(i); % 指向object
childNode = thisItem.getFirstChild ;
childNode = childNode.getNextSibling; % 指向name
childNode = childNode.getNextSibling; % 指向pose
childNodeNm = char(childNode.getTagName) % % 当前节点的名字,即pose
childNodeData = char(childNode.getFirstChild.getData) % 当前节点的内容,即Unspecified
childNode.setTextContent(a); % 把这个内容改成我们想要的
end
xmlwrite(str3,xmlDoc); %保存
end
相关文章推荐
- A release of a Camera Calibration Toolbox for Matlab
- Camera Calibration Toolbox for Matlab
- Matlab2013 配置vlfeat
- 3D散点 表面,2D散点,边界。 matlab 儿子的papa
- 凸优化工具箱cvx
- 主成分分析法原理与MATLAB实现
- matlab—多行注释
- MATLAB 人机交互(窗口)设置命令 (转载)
- Matlab中plot函数全功能解析
- matlab xlswrite 用法以及实例(转自“百度经验”)
- matlab中导入excel中的数据(转自“百度经验”)——亲测可用
- matlab 实现图像PSNR的小程序
- Matlab中的lsqcurvefit,非线性拟合
- 基于语音信号MFCC的情感识别
- matlab 作图-留着发论文时备用
- Matlab 连通分量处理, 二维和三维 (Matlab, Connected Component Process, 2D&3D)
- 基于matlab边缘提取的几种方法的比较
- matlab自己编写插值方法-好用
- matlab链接MySQL数据库配置方法
- 深度学习FPGA实现基础知识19(通过文件读写方式实现Matlab和Modelsim的联合仿真)