• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

matlab读取xml文件 - zhuangwy_CV

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

matlab读取xml文件

xml文件是一种可扩展标识语言,可以用来存储数据
由于实验需求要用matlab读取保存在xml文件的人体关节点数据
以下是\'bodyannotation.xml\'一个样例的示例,共305个图片标定,

以下是我参照网上他人的方法写的xml读取程序
clc;
clear;
xmlDoc = xmlread(\'bodyannotation.xml\');   % 读取文件  bodyannotation.xml

%% Extract ID
IDArray = xmlDoc.getElementsByTagName(\'ImagePath\');    % 将所有ImagePath节点放入数组IDArray
for i = 1 : IDArray.getLength    % 此例子中, IDArray.getLength 等于 305
    kth(i).pathnm= char(IDArray.item(i-1).getFirstChild.getData)    % 提取当前节点的内容
end

%% extract the FDs
FDsArray = xmlDoc.getElementsByTagName(\'PerHuman\');  %   将所有PerHuman节点放入数组FDsArray

 for i = 1 : FDsArray.getLength   
    thisItem = FDsArray.item(i-1);  %    
    %FDsAttributes = char(thisItem.getAttributes.item(0).getValue)   % 提取FDs节点的属性,如果没有属性或不需要提取,可以注释掉。这里,FDsAttributes =  opencv-matrix
    childNode = thisItem.getFirstChild ;
    
  while ~isempty(childNode)  % 遍历PerHuman的所有子节点,也就是遍历 标注程序保存下来的各个数据点 节点

      if  childNode.getNodeType == childNode.ELEMENT_NODE ;    % 检查当前节点没有子节点,  childNode.ELEMENT_NODE 定义为没有子节点。
          childNodeNm = char(childNode.getTagName)        % 当前节点的名字
          childNodedata = char(childNode.getFirstChild.getData)    % 当前节点的内容
          marks=choosenode(childNodeNm);
          switch(marks)                                         
             case 1     
                 A.head=childNodedata;
             case 2     
                 A.neck=childNodedata;
             case 3  
                 A.leftshoulder=childNodedata;
             case 4
                 A.rightshoulder=childNodedata;
             case 5
                 A.leftartifice=childNodedata;
             case 6
                 A.rightartifice=childNodedata;
             case 7
                 A.lefthand=childNodedata;
             case 8
                 A.righthand=childNodedata;
             case 9
                 A.leftpelvis=childNodedata;
             case 10
                 A.rightpelvis=childNodedata;
             case 11
                 A.leftknee=childNodedata;
             case 12
                 A.rightknee=childNodedata;
             case 13
                 A.leftfoot=childNodedata;
             case 14
                 A.rightfoot=childNodedata;
              otherwise
             end
      end  % End IF   
      
     childNode = childNode.getNextSibling;     % 切换到下一个节点
  end  % End WHILE
     kth(i).head=A.head;                        %已有重复,可以直接在上一段中用kth(i)取代A,但暂时不做修改了。
     kth(i).neck=A.neck;
     kth(i).leftshoulder=A.leftshoulder;
     kth(i).rightshoulder=A.rightshoulder;
     kth(i).leftartifice=A.leftartifice;
     kth(i).rightartifice=A.rightartifice;
     kth(i).lefthand=A.lefthand;
     kth(i).righthand=A.righthand;
     kth(i).leftpelvis=A.leftpelvis;
     kth(i).rightpelvis=A.rightpelvis;
     kth(i).leftknee=A.leftknee;
     kth(i).rightknee=A.rightknee;
     kth(i).leftfoot=A.leftfoot;
     kth(i).rightfoot=A.rightfoot;
 end

 

 
 






鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
可恶的杀毒软件,难道DELPHI和你有仇吗?发布时间:2022-07-18
下一篇:
Delphi的文件保存TFileStream(2010版本前后对比)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap