![]() |
xmlnode problem
Hi leutz
habe folgenden code:
Delphi-Quellcode:
ich rufe diese schleife öfter auf, habe jetzt aber das problem, das er mir hier:
myNode := config.DocumentElement.ChildNodes.First.ChildNodes.FindNode('accdevs');
if myNode <> nil then begin myNodeList := MyNOde.ChildNodes; for i := 0 to mynodelist.Count -1 do begin 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;
Delphi-Quellcode:
nicht mehr rein geht, was habe ich falsch gemacht?
for i := 0 to mynodelist.Count -1 do begin
danke im voraus LG |
AW: xmlnode problem
ich glaub ich weiß warum:
beim 2. aufruf ist der mynodelist.counter auf = 0 dh. er findet keine childnodes oder?
Delphi-Quellcode:
zur erklärung, mein xml sieht so aus:
if myNode <> nil then begin
myNodeList := MyNOde.ChildNodes;
Code:
mein code sieht so aus:
<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>
Delphi-Quellcode:
warum liest er mir die accdevs nur für id = 1 aus? und nicht für id 2?
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; dane und lg |
AW: xmlnode problem
Geht er denn ein zweites mal in die while-Schleife hinein?
|
AW: xmlnode problem
hier geht er noch rein
Delphi-Quellcode:
if myNode <> nil then begin
myNodeList := MyNOde.ChildNodes; |
AW: xmlnode problem
Ich denke, Du suchst wieder im ersten Knoten, der aber inzwischen geleert ist.
Delphi-Quellcode:
Lass Dir mal das XML-Dokument nach dem ersten Schleifendurchlauf anzeigen.
myNode := config.DocumentElement.ChildNodes.FindNode('accdevs');
|
AW: xmlnode problem
das stimmt!
wie wäre das zu realisieren? so vielleicht?
Delphi-Quellcode:
mynode := config.DocumentElement.NextSibling;
|
AW: xmlnode problem
Kann ich nicht sicher sagen (da die XML-Kompos immer etwas unterschiedlich zu handhaben sind).
Wenn Die Struktur immer in der festgelegten Form vorliegt geht vielleicht auch so etwas wie
Delphi-Quellcode:
mynode := XmlNode.ChildNodes[0].ChildNodes[0]
|
AW: xmlnode problem
die Struktur ist immer die selbe, weiß jedoch nicht wo ich das implementieren soll....
|
AW: xmlnode problem
habe den fehler gefunden:
Delphi-Quellcode:
diese Zeile machts möglich... :)
myNode := xmlnode.ChildNodes.FindNode('accdevs');
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz