В эти дни многие SQL двигатели имеют возможность автоматически генерировать результаты запроса, отформатированные в XML. Например, Microsoft SQL Server обеспечивает очень простой режим, ниже - выдержка из Online Books.
SELECT Cust.CustomerID,
OrderHeader.CustomerID,
OrderHeader.SalesOrderID,
OrderHeader.Status,
Cust.CustomerType
FROM Sales.Customer Cust, Sales.SalesOrderHeader OrderHeader
WHERE Cust.CustomerID = OrderHeader.CustomerID
ORDER BY Cust.CustomerID
FOR XML AUTO
Сгенерированный XML может выглядеть следующим образом:
<Cust CustomerID="1" CustomerType="S">
<OrderHeader CustomerID="1" SalesOrderID="43860" Status="5" />
<OrderHeader CustomerID="1" SalesOrderID="44501" Status="5" />
<OrderHeader CustomerID="1" SalesOrderID="45283" Status="5" />
<OrderHeader CustomerID="1" SalesOrderID="46042" Status="5" />
</Cust>
...
Вы можете написать сценарий этого, для обработки фрагментов XML по мере необходимости, или какой-либо другой дополнительной логики.
Если вы используете скрипты, то другой простой подход, связанный с некоторыми сценариями (C# в Windows), заключается в загрузке ADO.NET DataSet с использованием какого-то запроса, который представляет данные, которые вы хотите, а затем сериализуйте ADO.NET в файл XML.
Этот сценарий:
using System;
using System.Data;
using System.Data.OleDb;
class Script
{
public static void Main()
{
using(OleDbConnection cn = new OleDbConnection("Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=NORTHWIND;Integrated Security=SSPI"))
{
using (OleDbDataAdapter adapter = new OleDbDataAdapter("select EmployeeID, LastName, FirstName, Title from Employees", cn))
{
DataSet d = new DataSet("Customers");
adapter.Fill(d, "Customer");
d.WriteXml(@"c:\temp\MyXml.xml", XmlWriteMode.IgnoreSchema);
}
}
}
}
даст в XML с этой структурой:

Если база данных не поддерживает эту функцию, или вы предпочитаете другое решение, и если ваш XML должен соответствовать предписанному XSD, тогда я мог бы говорить за QTAssistant (я связан с ним), который имеет эту функцию на месте в течение довольно длительного времени; он называется XML Builder, и он в основном использует XML-карту между XSD и набором SQL stataments, структурированных в соответствии с иерархической природой XML-документа.
Если вы решили опробовать его, вам нужно будет сначала зарегистрироваться, чтобы скачать инструмент; встроенная справка содержит пошаговое руководство по настройке демонстрации, поскольку оно поставляется с работающим образцом в модуле> XML Builder> Образцы> Рекурсивный пример. Для образца требуется версия Microsoft SQL Server, но она может работать с любой другой базой данных, для которой на вашем компьютере установлен поставщик OLEDB, включая Excel или Access.
Когда интерактивными, это то, как загруженный образец выглядит следующим образом:
