![]() |
Knoten finden
Hallo vielleicht könnt ihr mir bei einem Problem helfen.
Hier erst einmal der Code
Delphi-Quellcode:
Die Sache ist, der Knoten BankAccounts befindet sich nicht immer an der selben Stelle, wie kann ich es lösen, das ich rausbekomme ob der Knoten vorhanden ist und an welcher Stelle und wie kann ich dann auf die Attribute zugreifen.
if Knotenliste.Nodes[1].ChildNodes.Nodes[1].NodeName = 'BankAccounts' then
begin Memo1.Lines.Add('************'); if Knotenliste.Nodes[1].ChildNodes.Nodes[1].ChildNodes[0].HasAttribute('bankName') then begin Memo1.Lines.Add(Knotenliste.Nodes[1].ChildNodes.Nodes[1].ChildNodes[0].Attributes['bankName']); end; Memo1.Lines.Add(Knotenliste.Nodes[1].ChildNodes.Nodes[1].ChildNodes[0].Attributes['bankCode']); Memo1.Lines.Add(Knotenliste.Nodes[1].ChildNodes.Nodes[1].ChildNodes[0].Attributes['eban']); Memo1.Lines.Add(Knotenliste.Nodes[1].ChildNodes.Nodes[1].ChildNodes[0].Attributes['swift']); Memo1.Lines.Add(Knotenliste.Nodes[1].ChildNodes.Nodes[1].ChildNodes[0].Attributes['accountNo']); Memo1.Lines.Add(Knotenliste.Nodes[1].ChildNodes.Nodes[1].ChildNodes[0].Attributes['street']); Memo1.Lines.Add(Knotenliste.Nodes[1].ChildNodes.Nodes[1].ChildNodes[0].Attributes['zip']); Memo1.Lines.Add(Knotenliste.Nodes[1].ChildNodes.Nodes[1].ChildNodes[0].Attributes['city']); Memo1.Lines.Add(Knotenliste.Nodes[1].ChildNodes.Nodes[1].ChildNodes[0].Attributes['isoCountryCode']); Memo1.Lines.Add('************'); end; Könnt ihr mir vielleicht ein kleines Beispiel geben. Vielen Dank. |
Re: Knoten finden
versuch mal
Delphi-Quellcode:
außerdem müßte ChildNodes soetwas wie IndexOf kennen
Knotenliste.Nodes[1].ChildNodes.Nodes['BankAccounts']
|
Re: Knoten finden
Vielen Dank für die schnelle Antwort werde es gleich mal probieren.
Hast du ein Beispiel für Index of bin noch neu in xml Vielen Dank |
Re: Knoten finden
Leider funktioniert das auch nicht.
HAst du noch eine Idee bin schon am verzweifeln. :( |
Re: Knoten finden
eigentlich sollte es gehn, da .Nodes einen Index oder NodeNamen entgegen nimmt
Zitat:
Delphi-Quellcode:
i := Knotenliste.Nodes[1].ChildNodes.IndexOf('BankAccounts')
|
Re: Knoten finden
Also bekomme mit
KnotenListe.Nodes[1].ChildNodes.IndexOf('BankAccounts'); Bekomme ich immer -1 zurück auch wenn es den Knoten nicht gibt |
Re: Knoten finden
wie ist denn die XML aufgebaut?
falls die erste 1 ( Knotenliste.Nodes[1] ) auch unterschiedlich ist, dann wird es nicht so einfach. |
Re: Knoten finden
Also das mit BankAccounts konnte ich jetzt mit deiner Hilfe lösen, da das immer Knotenliste[1] sein muss.
Aber ich habe noch einen Knoten Artikle der innerhalb der Knotenliste auch an unterschiedlicher Stelle vorkommen kann. Wie kann ich rausfinden wo er ist. Und den dann so ansprechen das ich die Attribute bekomme wo ich auch nicht weiß wo die dann genau stehen. |
Re: Knoten finden
Da muss ich hier doch mal
![]() Mit XPath ist das Lokalisieren der Knoten kein Problem - man braucht dann keine Schleifen für die Suche programmieren. Beispiel:
Delphi-Quellcode:
XPath ist wie eine neue Programmiersprache - mit dem Lernaufwand etwa mit SQL zu vergleichen.
nodelist := document.SelectNodes('//BankAccounts'); // findet all Elemente <BankAccounts>, egal auf welcher Ebene sie sind
for i := 0 to nodelist.length-1 do begin elementnode := nodelist.Item[i] as IXMLDOMelement; ... := elementnode.GetAttribute('bankName'); end; Auf XPath zu verzichten wäre genau so wie auf SQL zu verzichten. |
Re: Knoten finden
Und was ist wenn der Knoten nicht vorhanden ist? Und was bedeuten die beiden // bei BankAccounts?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 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-2025 by Thomas Breitkreuz