Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML speichern ? (https://www.delphipraxis.net/49100-xml-speichern.html)

tobster 5. Jul 2005 15:00


XML speichern ?
 
Ich hab jetzt den Nachmittag damit verbracht, hier zu suchen, wie ich XML-Dateien abspeichern kann.
Aber irgenwie gehts in allen Threads nur ums Lesen, was ansich ja nicht wirklich schwer ist. Mir ist klar, das es sich dabei um einfache Textdateien handelt, aber ich möchte mich ehrlich gesagt nicht um so triviale Dinge, wie in Textdateien zu speichern, kümmern müssen.

Ich habe mit dem Delphi beiliegenden TXMLDocument relativ simpel geschafft, bestimmte Daten zu lesen. Diese verarbeite ich in meiner Anwendung und möchte dann Resultate in andere neue XML-Dateien speichern. Aber irgendwie bin ich wohl zu dumm dafür.

Delphi-Quellcode:
var XML: tXMLDocument;
    Parent,Node: IXMLNode;

[...]

 XML := TXMLDocument.Create(Self);
 Parent := XML.CreateNode('data',ntElement);
 Node := XML.CreateNode('name',ntAttribute); //hier hagelts schon exceptions
 Node.NodeValue := Resultname;
 Parent.ChildNodes.Add(Node);

 XML.SaveToFile('graphs\'+Resultname+'.graph');
 XML.free;
Kann mir jemand bescheinigen, das ich entweder zu dumm bin und mir dann zeigen, wie es richtig geht? :?

Und bitte, ich wollte es eigentlich relativ einfach halten und keine weiteren Komponenten installieren. Und ja, das ominöse Tutorial ist mir bekannt, ein Hinweis darauf kann also entfallen.

tobster 5. Jul 2005 15:46

Re: XML speichern ?
 
Hab's selbst gefunden ;-):

Delphi-Quellcode:
 
 Root := XML.CreateElement('data','');
 XML.DocumentElement := Root;
Warum auch immer es da einen Unterschied zwischen CreateElement und CreateNode gibt (beide geben ein IXMLNode zurück)... Wahrscheinlich ist die zweite Zeile wichtiger. :shock:

Sidorion 5. Jul 2005 15:57

Re: XML speichern ?
 
Lesen:
Delphi-Quellcode:
Function TCharList.LoadFromFile(_sFileName: String): Boolean;
Var
  oFile: TXMLDocument;
  oNode: IXMLNode;
Begin
  try
    oFile:=TXMLDocument.Create(Application.MainForm);
    oFile.Active:=True;
    oFile.LoadFromFile(_sFileName);
    oNode:=oFile.ChildNodes[NODE_CHARLIST];
    Result:=Read(oNode);
    oFile.Free;
  except
    Result:=False;
  End;
End;
Schreiben:
Delphi-Quellcode:
function TCharList.SaveToFile(_sFileName: String): Boolean;
Var
  oFile: TXMLDocument;
  oNode: IXMLNode;
begin
  try
    oFile:=TXMLDocument.Create(Application.Mainform);
    oFile.Active:=True;
    oNode:=oFile.AddChild(NODE_CHARLIST);
    Result:=Write(oNode);
    If Result
    Then oFile.SaveToFile(_sFileName);
    FreeAndNil(oFile);
  except
    Result:=False;
  end;
End;
oNode ist dann jeweils das Root-Element und du kannst von hier dann
- beim Lesen Dich durch die ChildNodes via z.B.: oChild:=oNode.ChildNodes.FindNode('sample') hangeln
- beim Schreiben via z.B.: oChild:=oNode.AddChild('sample') neue Kindknoten erzeugen

tobster 5. Jul 2005 18:05

Re: XML speichern ?
 
Besten Dank, lass ich einfach mal so im Raum stehen, für diejenigen die ebenfalls mit Boardmitteln mal an dem Problem knabbern.
:dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 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