1

我想将数据从表导出到特定格式的 XML 文件。我对 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>

我缺少的是描述需要在事件属性之外,并且需要有一个标签。

有没有人能指出我正确的方向,或者给我一个关于如何完成这个的教程或类似的东西?

谢谢,

马特

4

2 回答 2

2

这应该做的工作:

SELECT
    name "event/@name"
    , startDate "event/@start"
    , description "event"
FROM
    [testing].[dbo].[time_timeline]
FOR XML PATH(''), ROOT('data')

注意事项:

  • 为了得到description的文本内容event,我们必须“提升”一个级别并使用,并在别名中为所有列PATH('')指定名称event
  • 所有以属性为中心的列必须位于所有非以属性为中心的列之前

要学习这些东西(或至少了解如何做你想做的事),请查看文档FOR XML并使用你自己的表和所需的 XML 结构。

于 2010-05-12T14:57:33.687 回答
1

考虑切换到 FOR XML PATH(有关文档,请参阅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')
于 2010-05-12T14:46:14.053 回答