AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Leere Rückgabewerte beim Auslesen einer XML mit JVSimpleXML
Thema durchsuchen
Ansicht
Themen-Optionen

Leere Rückgabewerte beim Auslesen einer XML mit JVSimpleXML

Ein Thema von dust258 · begonnen am 14. Sep 2009 · letzter Beitrag vom 14. Sep 2009
Antwort Antwort
dust258

Registriert seit: 18. Aug 2008
62 Beiträge
 
#1

Leere Rückgabewerte beim Auslesen einer XML mit JVSimpleXML

  Alt 14. Sep 2009, 08:31
Ich habe vor mich langsam von meinen (mehr oder weniger) geliebten INIs zu trennen und und nutze daher zum 1. mal die XML Komponente JVSimpleXML in einem meiner Projekte. Ich habe allerdings folgendes Problem:

Ich kann zwar meine Werte in die XML schreiben, aber beim auslesen bekomme ich nur leere Values zurück...
hier die XML:
Delphi-Quellcode:

- <ComboBoxItems>
- <FrameErrorHandling>
- <cBoxFailDataType>
     <wert1 />
     <wert2 />
     <wert3 />
     <wert4 />
    </cBoxFailDataType>
    <cBoxFailDestOpt1 />
    <cBoxFailDestOpt2 />
    <cBoxFailDestOpt3 />
   </FrameErrorHandling>
  </ComboBoxItems>
und hier der Code mit dem ich versuche die Daten auszulesen:
Delphi-Quellcode:

  loadDataFromFile;
  lXML := TDMXMLAccess.Create(self);
  try
    if ((assigned(SimpleXML.Root)) and
        (assigned(SimpleXML.Root.Items.ItemNamed[inSUnitName])) and
        (assigned(SimpleXML.Root.Items.ItemNamed[inSUnitName].items.itemnamed[inSCBoxName]))) then
    begin
      for i := 0 to SimpleXML.Root.Items.ItemNamed[inSUnitName].items.itemnamed[inSCBoxName].items.Count - 1 do
      begin
        outSLValue.Add(SimpleXML.Root.Items.ItemNamed[inSUnitName].items.itemnamed[inSCBoxName].Items.Item[i].Value);
        // outSLValue ist eine StringList und wird in diesem Fall mit 4 leeren Items gefüllt.
      end;
    end;
  finally
    lXML.free;
  end;
Ich steh echt auf dem Schlauch. "inSUnitName = FrameErrorHandling" und "inSCBoxName = cBoxFailDataType"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Leere Rückgabewerte beim Auslesen einer XML mit JVSimple

  Alt 14. Sep 2009, 08:39
ich sehe in der XML-Datei nirgendwo Values ... kann nur Nodes entdecken

z.B. "wert1" ist der Name dieses Nodes, welcher keinen Value besitzt
XML-Code:
<nodename />

<nodename>value</nodename>

<nodename attrname="attrvalue">nodevalue</nodename>
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
dust258

Registriert seit: 18. Aug 2008
62 Beiträge
 
#3

Re: Leere Rückgabewerte beim Auslesen einer XML mit JVSimple

  Alt 14. Sep 2009, 09:00
Super, danke so funktioniert es. Ich habe meinen Create-Befehl umgebaut. Es sieht jetzt wie folgt aus (falls mal jemand das gleiche Problem haben sollte )

Erstellen der XML
Delphi-Quellcode:
    
SimpleXML.Root.Items.ItemNamed[inSUnitName].items.itemnamed[inSCBoxName].items.add('item');

SimpleXML.Root.Items.ItemNamed[inSUnitName].items.itemnamed[inSCBoxName].items.Item[SimpleXML.Root.Items.ItemNamed[inSUnitName].items.itemnamed[inSCBoxName].items.Count-1].Value := inSValue;
Und die XML
Delphi-Quellcode:
- <ComboBoxItems>
- <FrameErrorHandling>
- <cBoxFailDataType>
     <item>File</item>
     <item>wert1</item>
     <item>wert2</item>
     <item>wert3</item>
     <item>wert4</item>
    </cBoxFailDataType>
- <cBoxFailDestOpt1>
     <item>DAT</item>
     <item>gg</item>
    </cBoxFailDestOpt1>
   </FrameErrorHandling>
  </ComboBoxItems>
DANKE himitsu
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Leere Rückgabewerte beim Auslesen einer XML mit JVSimple

  Alt 14. Sep 2009, 13:18
Liefert bei JVSimple die Funktion .Add nicht auch den Node zurück?

Wenn ja, dann kannst du es mindestens so abkürzen
SimpleXML.Root.Items.ItemNamed[inSUnitName].items.itemnamed[inSCBoxName].items.add('item').Value := inSValue;
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 22:48 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