AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

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, 12: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, 12: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 12:36 Uhr)
  Mit Zitat antworten Zitat
mcbain

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

AW: XML rekursiv durchsuchen

  Alt 16. Sep 2011, 12: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, 01: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

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.566 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: XML rekursiv durchsuchen

  Alt 17. Sep 2011, 10:05
Bei Google suchenXPath?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 21:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf