您的位置:首页 > 编程语言 > MATLAB

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


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: