Napisałem sobie procedurkę, która przy każdym wywołaniu dodaje do podanego pliku .xml nowy element. Wygląda ona tak:
var
XML: TXMLDocument;
XMLNode: IXMLNode;
begin
XML := TXMLDocument.Create(Self);
with XML do
begin
Options := Options + [doNodeAutoIndent];
Active := True;
if FileExists('c:\plik.xml') then
LoadFromFile('c:\plik.xml')
else
begin
Encoding := 'UTF-8';
AddChild('root');
end;
XMLNode := DocumentElement.AddChild('item', -1);
XMLNode.AddChild('name').Text := 'nazwa';
XMLNode.AddChild('text').Text := 'jakis text';
XML.SaveToFile('c:\plik.xml');
Free;
end;
end;
Kod działa sprawnie - nowa pozycja pojawia się w pliku .xml, lecz... ze złymi wcięciami. [glowa] Przy pierwszym wywołaniu procedury wszystko jest jak być powinno:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<name>nazwa</name>
<text>jakis text</text>
</item>
</root>
Ale już przy drugim wywołaniu tej procedury tylko nowo dodany element ma prawidłowe wcięcia, wcześniejsze elementy pliku zostają niepotrzebnie przesunięte w prawo:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item>
<name>nazwa</name>
<text>jakis text</text>
</item> <item>
<name>nazwa</name>
<text>jakis text</text>
</item>
</root>
Czy da się to jakoś poprawić? Czy coś robię nie tak? Z góry dziękuję za wszelką pomoc ;)