这是我的'C1.xml'文件:
<!DOCTYPE GroundTruth>
<dataset name="camera1">
<frame number="00000000"/>
<frame number="00000001"/>
<frame number="00000002"/>
<frame number="00000003"/>
<frame number="00000004"/>
.
.
.
<frame number="00000233">
<person id="0001">
<leftEye x="626" y="210"/>
<rightEye x="643" y="214"/>
</person>
</frame>
<frame number="00000234">
<person id="0003">
<leftEye x="619" y="211"/>
<rightEye x="636" y="215"/>
</person>
</frame>
<frame number="00000235">
<person id="0025">
<leftEye x="613" y="213"/>
<rightEye x="630" y="216"/>
</person>
</frame>
<frame number="00004403"/>
<frame number="00004404"/>
<frame number="00004405"/>
<frame number="00004406"/>
<frame number="00004407"/>
<frame number="00004408"/>
<frame number="00004409"/>
</dataset>
我的不完整代码:
xDoc = xmlread('C1.xml');
allListitems = xDoc.getElementsByTagName('frame');
frameL = allListitems.getLength;
for k = 0:frameL-1
thisElement = allListitems.item(k);
thisList = thisElement.getElementsByTagName('person');
if (thisList.getLength~=0)
thisElement = thisList.item(0);
% problem is here where I also don't know what type of data findCbk
% have (char or ...??)
findCbk = char(thisElement.getFirstChild.getData);
end
end
我想获取带有相应人员 ID 的帧号以及左眼和右眼的数据。所以,如果我sprintf findCbk
,它会给我一些我无法%d
联想到的数字,而%s
是空的。
所以这里有答案。我需要的是getAttribute
.因此,如果有人遇到同样的问题,或者如果我错了,有人可以纠正我,我会写下代码。
xDoc = xmlread('C1.xml');
allListitems = xDoc.getElementsByTagName('frame');
frameL = allListitems.getLength;
for k = 0: frameL-1
thisElement = allListitems.item(k);
frameNum = (char(thisElement.getAttribute('number')))
%check the child inside element frame
thisList = thisElement.getElementsByTagName('person');
face = thisList.getLength;
if (face~=0)
thisElement = thisList.item(0);
personID = (char(thisElement.getAttribute('id')))
eyeL = thisElement.getElementsByTagName('leftEye');
thisElementl = eyeL.item(0);
xL = (char(thisElementl.getAttribute('x')))
yL = (char(thisElementl.getAttribute('y')))
eyeR = thisElement.getElementsByTagName('rightEye');
thisElementr = eyeR.item(0);
xR = (char(thisElementr.getAttribute('x')))
yR = (char(thisElementr.getAttribute('y')))
break
end
end
它将返回:
frameNum =
00000000
frameNum =
00000001
frameNum =
00000002
.
.
.
.
frameNum =
00000230
frameNum =
00000231
frameNum =
00000232
frameNum =
00000233
personID =
0003
xL =
626
yL =
210
xR =
643
yR =
214