最近では、多くのSQLエンジンに、XML形式のクエリ結果を自動的に生成する機能があります。たとえば、Microsoft SQL Serverは非常にシンプルなモードを提供します。以下は、オンラインブックからの抜粋です。
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フラグメントを処理したり、その他の追加のロジックを実行したりできます。
スクリプトを作成する場合、スクリプト(WindowsではC#)を使用する別の簡単な方法は、必要なデータを表すある種のクエリを使用して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(私はそれに関連付けられています)について話すことができます; これはXMLBuilderと呼ばれ、基本的にXSDと一連のSQL統計の間のXMLマップを使用し、XMLドキュメントの階層的な性質に一致するように構造化されています。
試してみる場合は、最初に登録してツールをダウンロードする必要があります。埋め込まれたヘルプには、機能するサンプルが付属しているため、デモのセットアップ方法に関するステップバイステップガイドがあり、[モジュール]>[XMLビルダー]>[サンプル]>[再帰サンプル]トピックにあります。サンプルにはMicrosoftSQLServerのバージョンが必要ですが、ExcelやAccessなど、マシンにOLEDBプロバイダーがインストールされている他のデータベースで機能する可能性があります。
インタラクティブな場合、ロードされたサンプルは次のようになります。
