Guarda, io uso questa procedura
uses XMLIntf, XMLDoc;
. . . . .
var XML_Documento: IXMLDocument; XML_Nodo, XML_SottoNodo: IXMLNode;
begin
//imposta il documento
XML_Documento := TXMLDocument.Create(nil);
XML_Documento.Active := True;
//macro elemento
XML_Documento.DocumentElement := XML_Documento.CreateNode('elementi', ntElement, '');
//proprietà del macro elemento
XML_Documento.DocumentElement.Attributes['Attributo'] := 'ValoreAttributo';
//+++++nodo 1
XML_Nodo := XML_Documento.DocumentElement.AddChild('nodo1', -1);
XML_Nodo.Attributes['AttributoNodo1'] := 'ValoreAttributo1';
XML_Nodo.Attributes['AttributoNodo2'] := 'ValoreAttributo2';
XML_Nodo.Attributes['AttributoNodo3'] := 'ValoreAttributo3';
//-----sottonodo 1
XML_SottoNodo := XML_Nodo.AddChild('sottonodo1', -1);
XML_SottoNodo.Attributes['AttributoSottoNodo1'] := 'ValoreAttributo1';
XML_SottoNodo.Text := 'Testo del sottonodo1 - nodo1';
//-----sottonodo 2
XML_SottoNodo := XML_Nodo.AddChild('sottonodo2', -1);
XML_SottoNodo.Attributes['AttributoSottoNodo1'] := 'ValoreAttributo1';
XML_SottoNodo.Attributes['AttributoSottoNodo2'] := 'ValoreAttributo2';
XML_SottoNodo.Attributes['AttributoSottoNodo3'] := 'ValoreAttributo3';
XML_SottoNodo.Text := 'Testo del sottonodo2 - nodo1';
//+++++nodo 2
XML_Nodo := XML_Documento.DocumentElement.AddChild('nodo2', -1);
XML_Nodo.Attributes['AttributoNodo1'] := 'ValoreAttributo1';
XML_Nodo.Attributes['AttributoNodo2'] := 'ValoreAttributo2';
XML_Nodo.Attributes['AttributoNodo3'] := 'ValoreAttributo3';
//-----sottonodo 1
XML_SottoNodo := XML_Nodo.AddChild('sottonodo1', -1);
XML_SottoNodo.Attributes['AttributoSottoNodo1'] := 'ValoreAttributo1';
XML_SottoNodo.Text := 'Testo del sottonodo1 - nodo2';
//-----sottonodo 2
XML_SottoNodo := XML_Nodo.AddChild('sottonodo2', -1);
XML_SottoNodo.Attributes['AttributoSottoNodo1'] := 'ValoreAttributo1';
XML_SottoNodo.Attributes['AttributoSottoNodo2'] := 'ValoreAttributo2';
XML_SottoNodo.Attributes['AttributoSottoNodo3'] := 'ValoreAttributo3';
XML_SottoNodo.Text := 'Testo del sottonodo2 - nodo2';
//salva il file
XML_Documento.SaveToFile('C:\file.xml');
end;