本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权

欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/

本文主要是要利用matlab编写一个M文件,这个M文件的主要功能:对一个文件夹下面的多个XML文件进行信息的提取,然后利用所要得到的信息进行计算,最后生成对应文件名的文本文件。

先上一下XML文件:

<?xml version="1.0" ?>
<annotation><folder>che</folder><filename>a90180.jpg</filename><source><database>Unknown</database></source><size><width>641</width><height>512</height><depth>3</depth></size><segmented>0</segmented><object><name>1</name><pose>Unspecified</pose><truncated>0</truncated><difficult>0</difficult><bndbox><xmin>307</xmin><ymin>225</ymin><xmax>342</xmax><ymax>290</ymax></bndbox></object>
</annotation>

针对于这个XML文件,提取里面的xmin ,ymin,xmax,ymax四个节点的值,计算出长宽。并把,上面的坐标和长和宽写到和xml文件名一致的文本文件中。

上代码:

clc
clear allmaindir = 'C:\Users\yezi\Desktop'; %%存放文件的上一级目录,即该文件夹的上一级,文件位于C:\Users\yezi\Desktop\3下面
subdir =  dir( maindir );   % 先确定子文件夹
for i = 1 : length( subdir ) if( isequal( subdir( i ).name, '.' ) ||isequal( subdir( i ).name, '..' ) ||  ~subdir( i ).isdir )  ; % 如果不是目录跳过 continue; end     subdirpath = fullfile( maindir, subdir( i ).name, '*.xml' ); images = dir( subdirpath );   % 在这个子文件夹下找后缀为jpg的文件       % 遍历每张图片 for j = 1 : length( images ) imagepath = fullfile( maindir, subdir( i ).name, images( j ).name  ) % % %          imgdata = imread( imagepath );   % 这里进行你的读取操作 xmlDoc=xmlread(imagepath); %读入xml文件% name = 'a80240';
str1 = '1 '%% extract the FDs
FDsArray = xmlDoc.getElementsByTagName('bndbox');  %   将所有PerHuman节点放入数组FDsArray
k=0;
%  for i = 1 : FDsArray.getLength   thisItem = FDsArray.item(0);  %    %FDsAttributes = char(thisItem.getAttributes.item(0).getValue)   % 提取FDs节点的属性,如果没有属性或不需要提取,可以注释掉。这里,FDsAttributes =  opencv-matrixchildNode = thisItem.getFirstChild ;while ~isempty(childNode)  % 遍历PerHuman的所有子节点,也就是遍历 标注程序保存下来的各个数据点 节点if  childNode.getNodeType == childNode.ELEMENT_NODE ;    % 检查当前节点没有子节点,  childNode.ELEMENT_NODE 定义为没有子节点。k=1+k;childNodeNm = char(childNode.getTagName)   ;     % 当前节点的名字childNodedata = char(childNode.getFirstChild.getData)    % 当前节点的内容
%           marks=choosenode(childNodeNm);m(k) = str2num(childNodedata);end  % End IF   childNode = childNode.getNextSibling;     % 切换到下一个节点end  % End WHILEx = m(3)-m(1);y = m(4)-m(2);
%   strrep 进行字符串替换,区分大小写
%   strrep(str1,str2,str3)
%      它把str1中所有的str2字串用str3来替换newname = strrep(images( j ).name,'.xml','.txt')%%重命名fid=fopen(newname,'wt');   %在当前目录下创建一个文件写入数据
fprintf(fid,str1);
fprintf(fid,'%d',m(1));fprintf(fid,' ');fprintf(fid,'%d',m(2));fprintf(fid,' ');
fprintf(fid,'%d',x);fprintf(fid,' ');
fprintf(fid,'%d',y);
fclose(fid);end
end

最后附上参考的文章链接

文件批量处理

对xml进行操作

感谢作者分享!

利用matlab对xml文件进行批量处理相关推荐

  1. [Linux C]利用libxml2解析xml文件

    为了解析xml,可以使用Linux下默认安装的libxml2. /*a.c功能:利用libxml2解析xml文件 */#include <stdio.h> #include <std ...

  2. matlab分析xml文件_如何在Java中读取XML文件(DOM分析器)

    matlab分析xml文件 Today we will learn how to read the XML file in Java. We will also learn how to parse ...

  3. matlab分析xml文件_修改Java中的XML文件(DOM分析器)

    matlab分析xml文件 We can modify XML file in Java using DOM parser. We can add elements, remove elements, ...

  4. matlab对xml文件操作,Matlab读写xml文件

    xml文件以文档对象模型表示,简称DOM(Document Object Model).在Matlab中,使用xmlread读取xml文件成DOM节点,对xml文件的操作转化成对DOM节点的操作,使用 ...

  5. ncl批量处理多个nc文件_利用MATLAB读取NC文件并绘图

    最近需要对很多NC 文件进行绘图,通常情况下,我一直用GMT,不过不知道为什么,笔记本上的GMT 用不了了,可能是版本的问题,但是我下了很多版本都无法使用,画出来的图都有问题.由于笔记本安装硬盘也就2 ...

  6. 利用MATLAB读取.nc文件单像元数值并转为Excel格式(以中国日降雨量月均数据为例)

    以中国日降雨量月均数据(nc文件包含12月)为例,提取某经纬度下的多月份像元值. ([数据分享]1960-2020年中国1公里分辨率月降水数据集) 一.确定经纬度所在行列号 以92.18E,30.47 ...

  7. JavaEE XML的读写(利用JDom对XML文件进行读写)

    1.有关XML的写 利用JDom2包,JDom2这个包中,至少引入org.jdom2.*;如果要进行XML文件的写出,则要进行导入org.jdom2.output.*; package com.lit ...

  8. 利用dom4j取出XML文件中的数据

    在我们做项目的时候会经常用到XML文件用来配置系统,XML让系统更加的具有了灵活性,Java如何从XML中取出我们想要的数据呢?下面是我利用DOM4J来实现取出XML文件中的数据. XML文件: &l ...

  9. 利用XPath读取Xml文件

    之所以要引入XPath的概念,目的就是为了在匹配XML文档结构树时能够准确地找到某一个节点元素.可以把XPath比作文件管理路径:通过文件管理路 径,可以按照一定的规则查找到所需要的文件:同样,依据X ...

最新文章

  1. 链接mysql_使用python链接mysql及redis(缓存型数据库)
  2. 在 Linux中find命令使用技巧
  3. Hook技术之4 在自己的进程中注入一个Dll到别人的进程
  4. 新上映的电影不在影院也一样能看到
  5. aopaspect区别_面试官:什么是AOP?Spring AOP和AspectJ的区别是什么?
  6. 找新房子需要考虑的因素
  7. 【转载】进程间的通信之剪贴板方法实现源码
  8. c++中求解非线性方程组_齐次线性方程组的基础解系的简便算法
  9. 一些java,spring boot图解
  10. SpringMvc2 使用注解形式发布请求地址
  11. cad2019菜单栏怎么调出来_Mac苹果鼠标移动速度设置到最快还是太慢了,你可以这样调~...
  12. web Server支持 perl
  13. python入门教程收藏_python入门教程:超详细保你2小时学会Python,快来收藏看看...
  14. lightoj1213推公式
  15. matlab模型辨识工具箱的使用
  16. 浅谈视频会议系统的带宽控制!
  17. 什么是Android SDK
  18. android 自定义特效,Android 自定义控件~流光特效
  19. 京东区块链之供应链应用篇:溯源应用结合区块链能碰撞出什么火花?
  20. 高通平台camera客观项测试之色彩偏差白平衡饱和度

热门文章

  1. ASP.NET Core Identity 实战(4)授权过程
  2. 网络编程 UDP套接字
  3. 使用vue的transition完成滑动过渡
  4. linux-centos下源代码安装subversion (svn)
  5. 《用Python写网络爬虫》——1.5 本章小结
  6. Hadoop HA+Federation 高可用联邦模式搭建指南
  7. Oracle 游标使用全解
  8. windows api 枚举进程pid
  9. sendmail邮件服务器配置
  10. poj 1935(搜索+回溯)