AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XML rekursiv durchsuchen

Ein Thema von mcbain · begonnen am 16. Sep 2011 · letzter Beitrag vom 17. Sep 2011
Antwort Antwort
mcbain

Registriert seit: 18. Mai 2011
50 Beiträge
 
#1

XML rekursiv durchsuchen

  Alt 16. Sep 2011, 11:13
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:
 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;
Ich weiß, es ist ein triviales Problem, aber komm gerdade nicht auf meinen Fehler...
Wäre nett, wenn jemand kurz drüber sehen könnte.
vielen Dank.
mc
  Mit Zitat antworten Zitat
Alaitoc

Registriert seit: 24. Okt 2008
263 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: XML rekursiv durchsuchen

  Alt 16. Sep 2011, 11:31
Könnte es sein, das du immer nur die RekursiveSuche auf den ersten Knoten der Unterknoten anwendest?

Siehe:
Zitat:
Node.ChildNodes.First
Nebenbei, Mahlzeit!

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

Geändert von Alaitoc (16. Sep 2011 um 11:36 Uhr)
  Mit Zitat antworten Zitat
mcbain

Registriert seit: 18. Mai 2011
50 Beiträge
 
#3

AW: XML rekursiv durchsuchen

  Alt 16. Sep 2011, 11:36
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;
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#4

AW: XML rekursiv durchsuchen

  Alt 17. Sep 2011, 00:58
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;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#5

AW: XML rekursiv durchsuchen

  Alt 17. Sep 2011, 09:05
Bei Google suchenXPath?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz