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