![]() |
Re: himXML (gesprochen himix ML)
Der <config> ist bei dir schon der RootNode (es kann ja nur Einen geben :lol: )
Also einfach das .Node['config'] danach weglassen. Ansonsten müßtest du über XML.Nodes gehen, da sind die ganzen Wurzelelemente drin enthalten. > XML.Nodes.Node['config'] PS: RootNode gibt immer den ersten und einzigen Daten-Knoten der Datei zurück. |
Re: himXML (gesprochen himix ML)
Danke jetzt gehts :D
|
Re: himXML (gesprochen himix ML)
Zitat:
in deinem Fall war es so, daß du auf Nodes zugreifen wolltest, welche nicht existierten und deßhalb automatisch angelegt wurden.
XML-Code:
<?xml version="1.0"?>
<config> <config> <port\> <username\> <password\> <server\> <db\> <dbport\> </config> <port>35353</port> <username>frank</username> <password>12345</password> <server>lserv</server> <db>devtest</db> <dbport>3306</dbport> </config> |
Re: himXML (gesprochen himix ML)
Hallo,
ich wollte QuickDownload etwas umschreiben und deine Lib benutzen. Nun habe ich folgendes:
Delphi-Quellcode:
Aber er meckert rum, wenn er versucht die Beschreibung zu speichern :)
procedure TForm4.Button1Click(Sender: TObject);
var XML : TXMLFile; begin if SDSave.Execute then begin XML := TXMLFile.Create; try XML.Encoding := 'UTF-8'; XML.RootNode.Name := 'qd2'; XML.RootNode.AddNode('file'); XML.RootNode.AddNode('file\filename').Text := EFilename.Text; XML.RootNode.AddNode('file\source').Text := ESource.Text; XML.RootNode.AddNode('file\description', xtCData).Text := MDescription.Text; XML.RootNode.AddNode('file\size').Text := SESize.Value; // FLAGS XML.RootNode.AddNode('file\').Text := SESize.Value; XML.RootNode.AddNode('file\destination').Text := SESize.Value; XML.SaveToFile(SDSave.FileName); finally XML.Free; end; end; end; Und könntest du nicht ein kleines Tutorial schreiben ;) MfG xZise |
Re: himXML (gesprochen himix ML)
Zitat:
Zitat:
nun möchte dieser Code
Code:
soeine XML erstellen (welches natürlich nicht XML-konform wäre)
XML.RootNode.Name := 'qd2';
XML.RootNode.AddNode('file'); XML.RootNode.AddNode('file\filename').Text := EFilename.Text; XML.RootNode.AddNode('file\source').Text := ESource.Text; [color=#ff0000]XML.RootNode.AddNode('file\description', xtCData)[/color].Text := MDescription.Text; XML.RootNode.AddNode('file\size').Text := SESize.Value; XML.RootNode.AddNode('file\destination').Text := SESize.Value;
Code:
du möchtests aber eigentlich Dieses
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<qd2> <file> <filename>C:\EFilename.Text</filename> <source>ESource.Text</source> [color=#ff0000]<![CDATA[MDescription.Text]]>[/color] <size>SESize.Value</size> <destination>SESize.Value</destination> </file> </qd2>
Code:
nun gibt es mehrere Wege ... z.B.:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<qd2> <file> <filename>C:\EFilename.Text</filename> <source>ESource.Text</source> [color=#ff0000]<description><![CDATA[MDescription.Text]]></description>[/color] <size>SESize.Value</size> <destination>SESize.Value</destination> </file> </qd2>
Delphi-Quellcode:
ein Leername '' zum Erstellen, da der CDATA-Naode ja namenslos ist
XML.RootNode.AddNode('file\description').AddNode('', xtCData).Text := MDescription.Text;
XML.RootNode.AddNode('file\description\', xtCData).Text := MDescription.Text; Node := XML.RootNode.AddNode('file\description'); Node.asCDATA(True); Node.Text := MDescription.Text; (OK, eigentlich ist der Name dieses Nodes "CDATA", aber das ist ja egal und ich unterstützt diesbezüglich auch keine anderen Namen, drum der Leername, da hier der Name den Typ des Inhalts angibt und laut XML-Spec eh nur dieser Typ vordefiniert ist) aber dank xoNodeAutoCreate und da UTF-8 eh Standard ist, würde ich es einfach nur so machen :stupid:
Delphi-Quellcode:
XML := TXMLFile.Create;
try XML.RootNode.Name := 'qd2'; XML.Node['file\filename'].Text := EFilename.Text; XML.Node['file\source'].Text := ESource.Text; XML.Node['file\description'].asCDATA(True); XML.Node['file\description'].Text := MDescription.Text; XML.Node['file\size'].Text := SESize.Value; XML.Node['file\destination'].Text := SESize.Value; XML.SaveToFile(SDSave.FileName); finally XML.Free; end; Zitat:
Aber erstmal muß die Webseite entstehen :? Noch 'ne andere Frage. Eigentlich hatte ich ja angefangen diese Klassen auch mit auf Interaces umzustellen, nur gibt es da ein kleines Problem :? Egal was ich Versuche, es bleibt dennoch ein Mischmasch aus Interfaces und Objekten, sei es durch Verwendung von TStream und der ObjektSerialisierung und die Variants passen auch nicht so ganz mit den Interface-Philosophi zusammen. Ja, es gibt IStream, aber das ist in Delphi komplett unabhngig von TStream und auch wenn ich mit dafür eigene Objekte erstellen, dann brauch ich auch noch einen Umweg zum normalen TStream, um auch diesen zu unterstützen. Das Problem war gerade, daß ich nun mal endgültig auf Interfaces umstellen wollte, aber dieses einfach nicht komplett möglich ist :wall: Nun bleibt also noch der andere Weg: ich entferne die Interfaces wieder komlett raus und lasse alles einheitlich auf Objekten (dürfte auch etwas übersichtlich werden) Würde sich also jemand drann stören, wenn ich nun doch zukünftig keine Objekte mehr anbieten werde? (hatte ja eh immernoch das besch*** Problem mit der nicht richtig funktionierenden Referenzzählung) Der Hauptgrund für die Interfaces war ja, daß ich ich mal sehr große XML-Dateien unterstützen wollte, ohne das man diese in den RAM kopieren muß (wenn es überhaupt möglich wäre). Allerdings gibt es ja zum Lesen schon den SAX-Parser und demnächst entsteht auch noch ein SAX-Writer als Gegenstück ... und mit den Beiden wären ja ein sequentieller lesender oder schreibender Zugriff auf Dateien bis in den ExaBeyte-Bereich (64 Bit) möglich. Außerdem sind schon Pläne für einen bedingt Schreibenden und Lesenden XML-LogFile-Writer vorhanden. Welcher dann sozusagen und unter Bestimmten Bedinungen speichersparend (RAM) in beliebig große Dateien neue Daten/Nodes einfügen könnte. Also meinerseits gibt es nun/bald keinen wichtigen Grund mehr für Interfaces. :freak: |
Re: himXML (gesprochen himix ML)
Zitat:
|
Re: himXML (gesprochen himix ML)
ups ...
Zitat:
TXMLFile, TXMLNode und Co. oder IXMLFile, IXMLNode und Co. Weil ja Interfaces soooowas von "cool" sind, hatte ich mal angefangen alles auf Diese umzustellen (aktuell noch umschaltbar) Nur läßt sich einfach nicht alles nach diesem Schema nutzen und es wäre immer ein Mischmasch, drum plane ich, die Interface-Version wieder rauszunehmen und dafür alles durchweg komplett als mit Klassen zu machen. Aktuell ist die Version mit Interfaces eh nicht so richtig nutzbar, aber könnte ja sein, daß wer darauf spekuliert hat, dieses später man nutzen zu können :angel2: |
Re: himXML (gesprochen himix ML)
Also ich kann auf Interfaces verzichten, hab' lieber was in der Hand ;)
Aber mich darf man nicht als Maß nehmen, bin sowieso mehr rustikal eingestellt... |
Re: himXML (gesprochen himix ML)
Also auf die Interfaces kann auch ich verzichten.
Bin mit den Objekten zufrieden :-) Bin sehr zufrieden mit himXML, würde gerne was spenden. Himitsu, hast Du ein Paypal Konto? Schreib doch evtl. eine kurze PM. Gruß Patrick |
Re: himXML (gesprochen himix ML)
Zitat:
[edit] ok, der geht gleich wieder ... nur noch schnell die HTML neu hochladen ._. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 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 by Thomas Breitkreuz