基于matlab的XML文件批量处理

基于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>

猜你喜欢

转载自blog.csdn.net/weixin_43812135/article/details/89326457