SQL Server 2005 FOR XML
我想将表格中的数据导出到特定格式的XML文件。我对XML文件相当陌生,所以我追求的内容可能很明显,但我只是无法找到我在网上寻找的东西。SQL Server 2005 FOR XML
我需要的XML结果的格式是:
<data>
<event
start="May 28 2006 09:00:00 GMT"
end="Jun 15 2006 09:00:00 GMT"
isDuration="true"
title="Writing Timeline documentation"
image="http://simile.mit.edu/images/csail-logo.gif">
A few days to write some documentation
</event>
</data>
我的表结构是:
name VARCHAR(50),
description VARCHAR(255),
startDate DATETIME,
endDate DATETIME
(我不是在XML领域图像或isDuration在这一点上太有兴趣时间)。
我曾尝试:
SELECT [name]
,[description]
,[startDate]
,[endTime]
FROM [testing].[dbo].[time_timeline]
FOR XML RAW('event'), ROOT('data'), type
这给了我:
<data>
<event name="Test1"
description="Test 1 Description...."
startDate="1900-01-01T00:00:00"
endTime="1900-01-01T00:00:00"
/>
<event name="Test2"
description="Test 2 Description...."
startDate="1900-01-01T00:00:00"
endTime="1900-01-01T00:00:00"
/>
</data>
我所缺少的,是描述必须的事件属性外,并需要有一个标签。
是否有人能够指出我正确的方向,或指向我的教程或类似的如何做到这一点?
感谢,
马特
这应该做的工作:
SELECT
name "event/@name"
, startDate "event/@start"
, description "event"
FROM
[testing].[dbo].[time_timeline]
FOR XML PATH(''), ROOT('data')
个
注意事项:
- 为了得到
description
为event
的文本内容,我们以“加强”的水平,并使用PATH('')
,并在别名指定的名称event
所有列 - 所有属性为中心的列必须拿出所有非属性为中心的列
之前对于学习这东西(或至少让怎么做你想要什么的想法),见the docs for FOR XML
,只是玩弄哟你自己的表和所需的XML结构。
考虑XML路径切换到(见http://msdn.microsoft.com/en-us/library/ms189885.aspx对于文件)
一个很局部的例子:
SELECT
[name]
,[description]
,[startDate] "@start"
,[endTime] "@end"
FROM [testing].[dbo].[time_timeline]
FOR XML PATH('event'), ROOT('data')
这将把'description'放在它自己的节点中,名为'description';也必须以属性为中心的列第一。 – AakashM 2010-05-12 14:56:13
是的,我试图用一般的方式来演示这个方法,而不是提供一个特定的工作例子 – 2010-05-12 15:08:53
这是非常好的,我记得碰到类似的东西,但没有得到它的工作,所以只是假设它不是我以后的东西。你解释它的方式将帮助我解决其他需要我做的查询。非常感谢。 – Lima 2010-05-13 01:36:47