欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于matlab的XML文件批量处理

程序员文章站 2022-04-17 15:54:31
...

基于matlab的XML文件批量处理

maindir = ’ ‘; %引号里面填XML文件所在的文件路径
subdirpath = fullfile( maindir, ‘*.jpg’ ); %读取文件夹中jpg格式的图片(以jpg格式图片为例,也可以是其他格式)
img = dir( subdirpath1 ); %将找到的所有XML文件内容传递给img

for j = 1 : length( img) % length( img)是XML文件夹中XML文件的个数
{
imagepath = fullfile( maindir,img( j ).name);%将第 j个中的XML文件路径传递给 imagepath
image=imread(imagepath); %读取第 j 个XML文件
 FDsArray = xmlDoc.getElementsByTagName('bndbox');  %   将所有FDs节点放入数组FDsArray  
 for i = 0 : FDsArray.getLength-1     
    thisItem = FDsArray.item(i);  %      
    childNode = thisItem.getFirstChild ;  
      while ~isempty(childNode)  % 遍历FDs的所有子节点,也就是遍历 ("rows, cols, data") 节点 
          if childNode.getNodeType == childNode.ELEMENT_NODE     % 检查当前节点没有子节点,  childNode.ELEMENT_NODE 定义为没有子节点。
             childNodeNm = char(childNode.getTagName) ;       % 当前节点的名字  
             childNodeData = char(childNode.getFirstChild.getData) ;   % 当前节点的内容  
              m(k) = str2num(childNodeData);%缺陷区域坐标
}

对应的xml文件:

<?xml version="1.0"?>
-<annotation>
<folder>sc</folder>
<filename>scratches_1.jpg</filename>
-<source>
<database>NEU-DET</database>
</source>
-<size>
<width>200</width>
<height>200</height>
<depth>1</depth>
</size>
<segmented>0</segmented>
-<object>
<name>scratches</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
-<bndbox>
<xmin>26</xmin>
<ymin>12</ymin>
<xmax>43</xmax>
<ymax>171</ymax>
</bndbox>
</object>
</annotation>