[Delphi] TXMLDocument - niepoprawne wcięcia

0

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 ;)

0
with TXMLDocument.Create(Self) do
  begin
  Active := True;
  Encoding := 'UTF-8';
  Options := Options + [doNodeAutoIndent];
  if FileExists('c:\plik.xml') then
    LoadFromFile('c:\plik.xml')
  else
    AddChild('root');
  NodeIndentStr:=#9;
  with DocumentElement.AddChild('item', -1) do
    begin
    AddChild('name').Text := 'nazwa';
    AddChild('tekst').Text := 'tekst';
    end;
  SaveToFile('c:\plik.xml');
  Free;
  end;

Czasem tag otwierający ostatniego dodanego elementu 'item' jest w linii z zamykającym poprzedni, ale po ponownym załadowaniu wszystko jest już OK.

0

Dzięki ogromne :) , dokładnie o to chodziło :)
Pozdrawiam [browar]

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.