ich glaub ich weiß warum:
beim 2. aufruf ist der mynodelist.counter auf = 0 dh. er findet keine childnodes oder?
Delphi-Quellcode:
if myNode <> nil then begin
myNodeList := MyNOde.ChildNodes;
zur erklärung, mein
xml sieht so aus:
Code:
<config>
<device id="1">
<accdevs>
<accdev>1</accdev>
<accdev>2</accdev>
</accdevs>
</device>
<device id="2">
<accdevs>
<accdev>3</accdev>
<accdev>4</accdev>
</accdevs>
</device>
</config>
mein code sieht so aus:
Delphi-Quellcode:
CoInitialize(nil);
config := LoadXMLDocument('C:\test.xml');
xmlnode := config.DocumentElement.ChildNodes.First;
i3 := 0;
while (xmlnode <> nil) do begin
i3 := i3 +1;
if xmlnode.HasAttribute('id') then begin
if xmlnode.Attributes['id'] = i3 then begin
myNode := config.DocumentElement.ChildNodes.FindNode('accdevs');
if myNode <> nil then begin
myNodeList := MyNOde.ChildNodes;
for i := 0 to mynodelist.Count -1 do begin
logfilest.add(1, 'accvalue: '+MyNodeList[i].nodevalue);
if accdev = MyNodeList[i].nodevalue then begin
logfilest.add(1, 'ACCDEV: '+accdev+' found in config:'+MyNodeList[i].nodevalue);
i2 := i2 + 1;
end;
end;
end;
myNodelist.Clear;
end;
xmlnode := xmlnode.NextSibling;
end;
warum liest er mir die accdevs nur für id = 1 aus? und nicht für id 2?
dane und lg