Всем добрый день!
Мне нужно из двух таблиц 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')
?
Никак не придумаю)