Показать сообщение отдельно
  #1  
Старый 13.05.2022, 14:41
markII markII вне форума
Прохожий
 
Регистрация: 13.05.2022
Сообщения: 2
Версия Delphi: Delphi 2010
Репутация: 10
По умолчанию Экспорт записей в xml

Всем добрый день!

Мне нужно из двух таблиц access экспортировать записи в xml. Пытаюсь сделать так:

Код:
var
 XmlDoc: TXmlDocument; 
 addroot, addnewchild: IXMLNode; 
begin
 ADOQ.SQL.Text :='select Dep, Name_user, Mail_user,  id_user, id_dep_u from tab_users, Ttab_dep where id_user = id_dep_u';
 ADOQ.Open;
  XmlDoc := TXmlDocument.Create(nil);
  XmlDoc.Active := true;
  XMLDocument1.Active := true;
  XmlDoc.Version := '1.0';
  XmlDoc.Encoding := 'UTF-8';

  addroot := XmlDoc.AddChild('City');
  while Not ADOQ.Eof do
    begin
      addnewchild := root.AddChild('Dep');
      addnewchild.SetAttribute(WideString('NameDep'), ADOQ.FieldByName('Dep').AsString);
      addnewchild := addnewchild .AddChild('User');
      addnewchild.SetAttribute(WideString('Name'),ADOQ.FieldByName('Name_user').AsString);
      addnewchild.SetAttribute(WideString('Mail'),ADOQ.FieldByName('Mail_user').AsString);
    end;
	ADOQ.Next
  XmlDoc.SaveToFile('C:\users.xml');
end;

Получаю файл с таким форматом:

Код HTML:
<?xml version="1.0" encoding="UTF-8"?> <City> <Dep Name="ПТО"> <User Name="Иванов Иван Иванович" Mail="ivanov@domennn.ru"/> </Dep> <Dep Name="ПТО"> <User Name="Никаноров Петр Семенович" Mail="nikanorov@domennn.ru"/> </Dep> <Dep Name="ПТО"> <User Name="Петров Яков Аронович" Mail="yakov@domennn.ru"/> </Dep> <City>

Но мне нужно чтобы элемнеты были сгрупированы вот так:

Код HTML:
<?xml version="1.0" encoding="UTF-8"?> <City> <Dep Name="ПТО"> <User Name="Иванов Иван Иванович" Mail="ivanov@domennn.ru"/> <User Name="Никаноров Петр Семенович" Mail="nikanorov@domennn.ru"/> <User Name="Петров Яков Аронович" Mail="yakov@domennn.ru"/> </Dep> </City>

Может кто-нибудь подсказать как сделать группировку? Если я думаю в правильном направлении нужно сделать цикл в запросе, который обходил бы поле id_dep_u? Или цикл при добавлении
Код:
addnewchild := addnewchild .AddChild('User')
?
Никак не придумаю)
Ответить с цитированием