Einzelnen Beitrag anzeigen

value is NULL

Registriert seit: 10. Sep 2010
249 Beiträge
 
#2

AW: xmlnode problem

  Alt 30. Sep 2010, 19:01
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
  Mit Zitat antworten Zitat