![]() |
Re: XML mit TJvSimpleXml
Hallo,
also ich versuch es einmal,
Code:
Mit dem oben gepostetem Code schreib ich die XML Datei.
XML_Dock.Root.Name :='Config1';
with XML_Dock.Root.Items.add('Configtest') do Begin Items.Add('WERT1',edit1.text); Items.Add('cmb_Auswahl',combobox1.ItemIndex); end; XML_Dock.SaveToFile('Configuration.xml');
Code:
Mit dem Code möchte ich die Datei wieder auslesen und zurückschreiben in die entsprechenden Steuerelemente.
XML_Dock.LoadFromFile('Configuration.xml');
xml_Dock.Root.Name := ('config1'); Edit1.Text := xml_dock.Root.Items.item('Wert1'); ComboBox1.ItemIndex := xml_Dock.Root.Items.Item('cmb_Auswahl'); Kannst Du helfen?! Gruss Lars |
Re: XML mit TJvSimpleXml
Zitat:
xml_Dock.Root.Name := ('config1'); <-- diese Zeile kannst du dir komplett sparen. Das musst du nur beim Speichern der Datei machen, wenn die vorher nicht existierte. Wieso hast du da eigentlich Klammern um den String? Edit1.Text := xml_dock.Root.Items.item('Wert1'); <-- Werf mal einen Blick auf die CodeCompletion von Delphi. Diese Funktion erwartet als Parameter einen integer und keinen String. Nebenbei erhaelst du so nur das Element und nicht was in dem Element drin steht. Richtig ist: Edit1.Text := xml_dock.Root.Items.itemNamed['Wert1'].Value; Bei der naechsten Zeile genau das selber, nur dass es sich bei Combobox1.itemindex um eine Zahl handelt. Daher nimmst du nicht Value sondern IntValue: ComboBox1.ItemIndex := xml_Dock.Root.Items.ItemNamed['cmb_Auswahl'].IntValue; und schon sollte es klappen :-) |
Re: XML mit TJvSimpleXml
HI,
Also angeschaut ja, mir war der aufbau nicht ganz klar aber nun klickerte es. Allerdings gibt es jetzt eine nette kleine Exception zugriffsverletzung am Modul Projekt1.exe Die Datei ist allerdings geschlossen... Hast Du noch einen Tipp wie ich das händeln kann!?
Code:
in dieser zeile springt er raus und macht sie blau...
Edit1.Text := xml_dock.Root.Items.itemNamed['Wert1'].Value;
Gruss lars und zur Vollständigkeit halber einmal die XML Datei
XML-Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<Config1> <Configtest> <WERT1>Testwert</WERT1> <cmb_Auswahl>2</cmb_Auswahl> </Configtest> </Config1> |
Re: XML mit TJvSimpleXml
Zitat:
<?xml version="1.0" encoding="iso-8859-1"?> <Config1> --root-Element <Configtest> --Unterelement des rootelements mit dem Name configtest <WERT1>Testwert</WERT1> --unterelement des Configtestelements mit dem Name WERT1 <cmb_Auswahl>2</cmb_Auswahl> </Configtest> </Config1> Das Unterelement des rootelements mit dem Name configtest leasst du komplett weg. Richtig:
Delphi-Quellcode:
Wenn das immernochnicht funzt, dann solltest du mal versuchen die gross- und kleinschreibung abgleichen. Also entweder beim speichern und beim Laden gross schreiben oder beides klein...
Edit1.Text := xml_dock.Root.Items.itemNamed['Configtest'].items.itemNamed['Wert1'].Value;
|
Re: XML mit TJvSimpleXml
Hallo,
So nun mal Sinning, Ich hab ein kleines Problem selber gelöst, die XML Datei die ich mir erzeugt habe von unten nach oben auszulesen. *froi* Jetzt will ich bestimmte Einträge suchen, also eine Art Indizierung darstellen. Variante 1: StringList alle werte einlesen und mit Index Versehen. variante 2: in einer Schleife die Werte der XML Datei durchlaufen lassen. Es geht darum keine doppelten Werte vorkommen zu lassen. Danch will ich auch noch entspreche Werte wieder löschen. Ich bion ja mal gespannt. Ist ein echt spannendes Thema. Wenn es ok ist stelle ich das Projekt mal rein und vielleicht kann man da ja auch was mitnehmen an Erfahrung. Gruß Lars
XML-Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<Config1> <Configtest> <ProfilName>Profil 1</ProfilName> <WERT1>Hallo Versuch 1</WERT1> <cmb_Auswahl>2</cmb_Auswahl> </Configtest> <Configtest> <ProfilName>Profil 2</ProfilName> <WERT1>Hallo Versuch 2</WERT1> <cmb_Auswahl>3</cmb_Auswahl> </Configtest> </Config1> |
Re: XML mit TJvSimpleXml
hi all..
bin gerade an einem kleinen xml projekt.. und suchte nach guten möglichkeiten ein xml-file auszulesen. da sties ich auf dieses tut hier. jetzt zu meinem problem: Delphi meldet mir dass er aus "XmlDoc.Root.Count" [Fehler] profiler_readout.pas(40): Undefinierter Bezeichner: 'Count' kann mir dabei jemand helfen? |
Re: XML mit TJvSimpleXml
Das kann durchaus jemand^^
Nun, Es gibt nur einen root, daher hat root keine Eigenschaft "Count". Root hat aber Items, die gezählt und ausgegeben werden können. Demnach muss es also einfach nur .Root.Items.Count heißen! |
Re: XML mit TJvSimpleXml
Erstmal ein großes dankeschön für das Tut. Sowas in der Art hab ich irgendwie schon immer gesucht. Allerdings bin ich der Meinung, dass mit dem TJvSimpleXML auch sowas
Code:
möglich ist (*nachdenk*). Ich hab mit dem SImpleXML ja schonmal rumgespielt. Sollte ihc da was rausfinden, melde ich mich.
<resource_name value="VV4A"/>
Ich hab aber eine andere Frage: wie sieht das mit der Geschwindigkeit aus, wenn ich, sagen wir mal zu einer geladenen XML Datei so 3-4 Unterknoten einfüge (mit jeweils etwa einer Zeile Text als Inhalt) und das dann abspeichere. Ist da die JVCL Variante schnell, oder gibts da noch was besseres? Die Frage ist jetzt so eine Sache, weil ich das auch selbst testen könnte. Falls jemand so schon Ahnung hat, würde ich sie gerne hören, ansonsten werd ich selbst testen (müssen). Gruß alias5000 |
Re: XML mit TJvSimpleXml
Ich meine, hier mal irgendwo gelesen zu haben, dass die TJvSimpleXML keine Attribute behandeln kann. Dort wurde darauf verwiesen, dass es ja nur eine Simple-XML ist und man das daher nicht erwarten könne...
Aber interessant wäre das für mich durchaus auch einmal, wenn auch ich damit schon einiges tat und noch auf keine Möglichkeit stieß. Bezüglich Zeitaufwand: Genaue Werte kann ich dir auch nicht geben, doch geht es wirklich raschefix^^ Ich habe eine Datei mit ~20 Unterknoten, die jeweils 7 Elemente enthalten.. Von der Speicherung merke ich dabei nichts und auch das einfügen (wenn auch sie einzeln eingefügt und vorher händisch eingegeben werden) geht ohne merklichen Verbrauch von statten. Bei den 4 Einträgen sollte die Zeit also absolut irrelevant sein. |
Re: XML mit TJvSimpleXml
Bloß, wenn ich schon, sagen wir mal 400 Knoten mit je den 4 Unterknoten hab, wie siehts dann aus
(Es geht um die gestaltung einer Historie in einem Chat, da muss das schnell von statten gehen) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 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