Включает ли ваш запрос предложение order by
? В режиме for xml explicit
важно, чтобы информация отображалась в той последовательности, в которой она необходима. Например, в примере базы данных Northwind вы можете сгенерировать вложенный XML для территорий сотрудников, например:
select
1 as Tag,
Null as Parent,
e.EmployeeId as [Employee!1!EmployeeId],
e.LastName as [Employee!1!LastName],
Null as [EmployeeTerritories!2!TerritoryID]
from dbo.Employees e
union all
select 2 as Tag,
1 as Parent,
et.EmployeeId as [Employee!1!EmployeeId],
Null as [Employee!1!LastName],
et.TerritoryId as [EmployeeTerritories!2!TerritoryID]
from dbo.EmployeeTerritories et
order by [Employee!1!EmployeeId], Parent
for xml explicit
Это приводит к XML как:
<Employee EmployeeId="1" LastName="Davolio">
<EmployeeTerritories TerritoryID="06897" />
<EmployeeTerritories TerritoryID="19713" />
</Employee>
<Employee EmployeeId="2" LastName="Fuller">
...
Чтобы получить представление о том, как это работает, выполните запрос без for xml explicit
.