grandioser Trick, jetzt habe ich sogar den Sinn des "LoadFromXML" verstanden.
Zitat:
XMLDocument1.LoadFromXML('<?
xml version="1.0" encoding="UTF-8" standalone="yes"?><WRT/>');
Mit dieser Prozedur kann ich jetzt also eine
XML-Datei neu erstellen und
ein Element eintragen oder eine vorhandene um eines ergänzen.
Klappt hervorragend.
Delphi-Quellcode:
procedure TForm2.Button5Click(Sender: TObject);
//add one XML
var i:integer;
app_new:IXMLNode;
begin
try
XMLDocument1.LoadFromFile('
d:\test.xml');
except
on E: EDOMParseError
do
begin
XMLDocument1.LoadFromXML('
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><WRT/>');
XMLDocument1.SaveToFile('
d:\test.xml');
end;
end;
i:=XMLDocument1.DocumentElement.ChildNodes.Count+1;
app_new:=XMLDocument1.DocumentElement.AddChild('
applicant_' + IntToStr(i));
app_new.AddChild('
family_name');
app_new.AddChild('
given_name');
app_new.AddChild('
testdate');
app_new.AddChild('
language');
app_new.ChildValues['
family_name']:='
Meyer'+ IntToStr(i);
app_new.ChildValues['
given_name']:='
Harald';
app_new.ChildValues['
testdate']:='
13.03.2009';
app_new.ChildValues['
language']:='
english';
XMLDocument1.SaveToFile('
d:\Test.xml');
end;
Warum aber ist in der
XML-Datei (im Gegensatz zu der in Einzelschritten erzeugten)
kein Linefeed? (und kein schönes Auto-Indent)
edit: Fehler gefunden, ich mußte bei der Neu-Erstellung noch mal
XMLDocument1.Options:=[doNodeAutoIndent];
einfügen.Seltsam eigentlich, das war in den Optionen im Objektinspektor eigentlich so eingestellt...
<?
xml version="1.0" standalone="yes"?>
<WRT><applicant_1><family_name>Meyer1</family_name><given_name>Harald</given_name>.........
Großen Dank für die Hilfe!