![]() |
TjvSimpleXML: Existiert Item?
Aloha,
ich fürchte ja, die Frage ist entweder hochgradig trivial oder wurde schonmal gestellt, aber ich finde leider nichts. Ich lese mit der TjvSimpleXML-Komponente eine XML-Datei ein, die eventuell optionale Items enthalten kann, sprich die kommen nicht unbedingt vor. Wenn ich so ein Item jetzt aber über seinen Namen auslesen will, wenn es nicht exisitert, kommt es zu einer Exception:
Delphi-Quellcode:
und die XML-Datei:
str := jvSimpleXML.Root.Items.ItemNamed['Bla'].Items.ItemNamed['Blubb'].Value;
Code:
Gibt es denn eine einfache Funktion ala "hasChildNamend(string):boolean" oder ähnliches, mit der ich herausfinden kann, ob so ein Child existiert?
<rootElement>
<Bla> <muh>...</muh> <Blubb>existiert manchmal, manchmal auch nicht.</Blubb> </Bla> </rootElement> Oder muss ich mir das selber basteln, indem ich alle Childs durchgehe und den Namen überprüfe? Schöne Grüße flo |
Re: TjvSimpleXML: Existiert Item?
Hi,
ich habs so gelöst:
Delphi-Quellcode:
if jvSimpleXML.Root.Items.IndexOf('Bla') <> -1 then
|
Re: TjvSimpleXML: Existiert Item?
Hi,
ich habe das Beispiel von den Jedis umgesetzt:
Delphi-Quellcode:
Wenn das nicht geht, hilft das klassische try except.
procedure ParsePosition(AnXMLNode: TJvSimpleXmlElem);
var i: Integer; n, s: String; tf: TField; begin for i := 0 to AnXMLNode.Items.Count - 1 do begin n := AnXMLNode.Items[i].Name; s := AnXMLNode.Items[i].Value; if n = 'order_total' then Parse_order_total(AnXMLNode.Items[i]) else if n = 'Bla' then tu_was_mit_bla; // hier müsste er auf alle Fälle trotzdem immer hinkommen if n <> '' then begin tf := XTCBestellungTbl.FindField(n); if tf <> nil then XTCBestellungTbl.FieldByName(n).AsString := s; end; end; end; |
Re: TjvSimpleXML: Existiert Item?
Dankeschön ... das mit IndexOf scheint ja recht schnell und zuverlässig zu sein.
|
Re: TjvSimpleXML: Existiert Item?
Guten Morgen
sollte nicht auch
Delphi-Quellcode:
funktionieren?
if assigned(jvSimpleXML.Root.Items.ItemNamed['Bla'].Items.ItemNamed['Blubb']) then
... Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 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