![]() |
XML rekursiv durchsuchen
Hallo Leute, ich stehe greade wieder mal auf dem Schlauch, könnte mir jemand bitte auf die Sprünge helfen?
Ich will eine XML rekursiv durchlaufen um einen bestimmten Knoten darin zu finden. Hänge aber gerade irgendwie... Irgendwie durchläuft Delphi den Baum nicht ganz... Folgendes habe ich propiert:
Code:
Ich weiß, es ist ein triviales Problem, aber komm gerdade nicht auf meinen Fehler...
procedure RekursiveSuche(aStartNode: IXMLNode; aString: string);
var Node: IxmlNode; i: integer; begin Node := aStartNode; for i := 0 to Node.ChildNodes.Count - 1 do begin if Node.IsTextElement then if Node.NodeName = aString then ShowMessage('gefunden'); if not Node.IsTextElement then RekursiveSuche(Node.ChildNodes.First,aString); end; end; Wäre nett, wenn jemand kurz drüber sehen könnte. vielen Dank. mc |
AW: XML rekursiv durchsuchen
Könnte es sein, das du immer nur die RekursiveSuche auf den ersten Knoten der Unterknoten anwendest?
Siehe: Zitat:
Edit: Abgesehen davon führst du die Schleife X mal der Unterknotenanzahl durch, überprüfst jedoch nicht den aktuellen Unterknoten sondern den Hauptknoten. Du musst mit Node.Childnodes[i] arbeiten (hoffe die Syntax war so) MfG Alaitoc |
AW: XML rekursiv durchsuchen
Habs nun hinbekommen.
Danke für den Hinweis Alaitoc.
Code:
procedure RekursiveSuche(aStartNode: IXMLNode; aString: string);
var Node: IxmlNode; i: integer; begin Node := aStartNode; for i := 0 to Node.ChildNodes.Count - 1 do begin ShowMessage(Node.ChildNodes.Nodes[i].NodeName); if Node.ChildNodes.Nodes[i].IsTextElement then if Node.ChildNodes.Nodes[i].NodeName = aString then ShowMessage('gefunden'); if not Node.ChildNodes.Nodes[i].IsTextElement then RekursiveSuche(Node.ChildNodes.Nodes[i],aString); end; end; |
AW: XML rekursiv durchsuchen
Gepimpt...
Delphi-Quellcode:
procedure RekursiveSuche(aStartNode: IXMLNode; aString: string);
var i: integer; begin for i := 0 to aStartNode.ChildNodes.Count - 1 do begin ShowMessage(aStartNode.ChildNodes.Nodes[i].NodeName); if aStartNode.ChildNodes.Nodes[i].IsTextElement then if aStartNode.ChildNodes.Nodes[i].NodeName = aString then ShowMessage('gefunden') else else RekursiveSuche(aStartNode.ChildNodes.Nodes[i],aString); end; end; |
AW: XML rekursiv durchsuchen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:43 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