SQL Server 2005 以降では、FOR XML句を使用して、SQL クエリの結果を XML に変換できます。
たとえば、Blgd、Suit、SQFT、PDate 列を使用してテーブルを構築するとします。
SELECT * FROM building FOR XML AUTO
テーブルの内容を次の XML に変換します。
<building Bldg="1" SUit="1" SQFT="1000" PDate="2012-09-24T00:00:00" />
<building Bldg="1" SUit="1" SQFT="1500" PDate="2011-12-31T00:00:00" />
列を要素にしたい場合は、
SELECT * FROM building FOR XML AUTO, ELEMENTS
内容を次の XML に変換します。
<building>
<Bldg>1</Bldg>
<SUit>1</SUit>
<SQFT>1000</SQFT>
<PDate>2012-09-24T00:00:00</PDate>
</building>
<building>
<Bldg>1</Bldg>
<SUit>1</SUit>
<SQFT>1500</SQFT>
<PDate>2011-12-31T00:00:00</PDate>
</building>
テキスト フィールドをCDATA
セクションとしてモデル化する場合は、句を使用して、こちらのガイドラインFOR XML EXPLICIT
に従って XML スキーマを定義する必要があります。
上記の Building テーブルTEXT
に、生成された XML で CDATA セクションとしてモデル化する必要がある型の text_col 列がある場合、SELECT
クエリは次のようになります。
SELECT
1 as Tag,
NULL as Parent,
Bldg AS [Building!1!Bldg!ELEMENT],
text_col AS [Building!1!!CDATA]
FROM Building
WHERE text_col IS NOT NULL
FOR XML EXPLICIT
結果は次のようになります。
<Building><Bldg>1</Bldg><![CDATA[From SQL Server 2005, the FOR XML clause provides a way to convert the results of an SQL query to XML.
E.g. Consider a table building with Blgd, Suit, SQFT, PDate columns.
SELECT * FROM building FOR XML AUTO
will convert the contents of table to the following XML:
<building Bldg="1" SUit="1" SQFT="1000" PDate="2012-09-24T00:00:00" />
<building Bldg="1" SUit="1" SQFT="1500" PDate="2011-12-31T00:00:00" />
If you want the columns to be elements, then
SELECT * FROM building FOR XML AUTO, ELEMENTS
would convert the contents to following XML:
<building>
<Bldg>1</Bldg>
<SUit>1</SUit>
<SQFT>1000</SQFT>
<PDate>2012-09-24T00:00:00</PDate>
</building>
<building>
<Bldg>1</Bldg>
<SUit>1</SUit>
<SQFT>1500</SQFT>
<PDate>2011-12-31T00:00:00</PDate>
</building>]]></Building>