The grid header row is used to set the XML node names.
When you leave this empty, this produces invalid HTML.
You can see this when changing your code to set at least a value for the header row cells:
var
sl: TStringList;
i: integer;
begin
AdvStringGrid1.Cells[1,1]:='Cell';
AdvStringGrid1.Cells[1,0]:='Header';
sl := TStringList.Create;
for i := 0 to AdvStringGrid1.ColCount-1 do
advstringgrid1.Cells[i,0] := chr(65+i);
for i := 0 to AdvStringGrid1.ColCount-1 do
sl.Add(AdvStringGrid1.Cells[I,0]);
AdvStringGrid1.SaveToXML('E:\TMS\test.xml', 'xmllist', 'xmlrecord', sl, true);
sl.Free;
end;