AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi TjvSimpleXML: Existiert Item?
Thema durchsuchen
Ansicht
Themen-Optionen

TjvSimpleXML: Existiert Item?

Ein Thema von Florian H · begonnen am 29. Dez 2008 · letzter Beitrag vom 30. Dez 2008
Antwort Antwort
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#1

TjvSimpleXML: Existiert Item?

  Alt 29. Dez 2008, 21:55
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:
str := jvSimpleXML.Root.Items.ItemNamed['Bla'].Items.ItemNamed['Blubb'].Value; und die XML-Datei:
Code:
<rootElement>
  <Bla>
    <muh>...</muh>
    <Blubb>existiert manchmal, manchmal auch nicht.</Blubb>
  </Bla>
</rootElement>
Gibt es denn eine einfache Funktion ala "hasChildNamend(string):boolean" oder ähnliches, mit der ich herausfinden kann, ob so ein Child existiert?
Oder muss ich mir das selber basteln, indem ich alle Childs durchgehe und den Namen überprüfe?


Schöne Grüße
flo
Florian Heft
  Mit Zitat antworten Zitat
C.Schoch

Registriert seit: 2. Jan 2006
Ort: Wüstenrot
235 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: TjvSimpleXML: Existiert Item?

  Alt 29. Dez 2008, 22:42
Hi,

ich habs so gelöst:

if jvSimpleXML.Root.Items.IndexOf('Bla') <> -1 then
Tschau Christian
Das System hofft auf Besserung
[Siemens]
  Mit Zitat antworten Zitat
Benutzerbild von Michael Habbe
Michael Habbe

Registriert seit: 10. Aug 2005
264 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: TjvSimpleXML: Existiert Item?

  Alt 29. Dez 2008, 23:41
Hi,

ich habe das Beispiel von den Jedis umgesetzt:
Delphi-Quellcode:
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_totalthen
      Parse_order_total(AnXMLNode.Items[i])
    else
      if n = 'Blathen
        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;
Wenn das nicht geht, hilft das klassische try except.
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#4

Re: TjvSimpleXML: Existiert Item?

  Alt 29. Dez 2008, 23:42
Dankeschön ... das mit IndexOf scheint ja recht schnell und zuverlässig zu sein.
Florian Heft
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: TjvSimpleXML: Existiert Item?

  Alt 30. Dez 2008, 07:35
Guten Morgen

sollte nicht auch
Delphi-Quellcode:
if assigned(jvSimpleXML.Root.Items.ItemNamed['Bla'].Items.ItemNamed['Blubb']) then
 ...
funktionieren?

Grüße
Klaus
Klaus
  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 14:33 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