このごろ、多くの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
Aは、XMLは次のように見えるかもしれ生成:あなたはこの、必要に応じて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>
...
ことができます。
スクリプトを作成する場合、いくつかのスクリプト(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(私はそれに関連しています)の話をすることができました。それはXML Builderと呼ばれ、基本的にXSDと一連のSQLステートメントの間のXMLマップを使用し、XML文書の階層的性質に合わせて構造化されています。
試してみる場合は、最初に登録してツールをダウンロードする必要があります。組み込みヘルプには、Modules> XML Builder> Samples> Recursive Sampleトピックの下に機能サンプルが付属しているので、デモを設定する方法のステップバイステップガイドがあります。このサンプルには、Microsoft SQL Serverのバージョンが必要ですが、ExcelまたはAccessを含む、マシンにインストールされているOLEDBプロバイダがある他のデータベースでも動作します。
、これがロードされたサンプルがどのように見えるか、対話型である: