Можно проще. Просто проверяй на изменене значения в поле Dep и только в этом случае создавай новый узел.
Как-то так:
Код:
DepName := '';
DepNode := Nil;
addroot := XmlDoc.AddChild('City');
while Not ADOQ.Eof do
begin
if DepName <> ADOQ.FieldByName('Dep').AsString Then
begin
DepNode := root.AddChild('Dep');
DepNode.SetAttribute(WideString('NameDep'), ADOQ.FieldByName('Dep').AsString);
DepName := ADOQ.FieldByName('Dep').AsString;
end;
addnewchild := DepNode.AddChild('User');
addnewchild.SetAttribute(WideString('Name'),ADOQ.FieldByName('Name_user').AsString);
addnewchild.SetAttribute(WideString('Mail'),ADOQ.FieldByName('Mail_user').AsString);
ADOQ.Next
end;