AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XML speichern ?

Ein Thema von tobster · begonnen am 5. Jul 2005 · letzter Beitrag vom 5. Jul 2005
Antwort Antwort
tobster

Registriert seit: 19. Sep 2003
Ort: Schmalkalden
92 Beiträge
 
Delphi XE Starter
 
#1

XML speichern ?

  Alt 5. Jul 2005, 16:00
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.
Ciao
  Mit Zitat antworten Zitat
tobster

Registriert seit: 19. Sep 2003
Ort: Schmalkalden
92 Beiträge
 
Delphi XE Starter
 
#2

Re: XML speichern ?

  Alt 5. Jul 2005, 16:46
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.
Ciao
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#3

Re: XML speichern ?

  Alt 5. Jul 2005, 16:57
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
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
tobster

Registriert seit: 19. Sep 2003
Ort: Schmalkalden
92 Beiträge
 
Delphi XE Starter
 
#4

Re: XML speichern ?

  Alt 5. Jul 2005, 19:05
Besten Dank, lass ich einfach mal so im Raum stehen, für diejenigen die ebenfalls mit Boardmitteln mal an dem Problem knabbern.
Ciao
  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 02:13 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