用于 XML 的 SQL Server 2005

发布于 2024-09-01 19:03:41 字数 1396 浏览 1 评论 0原文

我想将数据从表导出到特定格式的 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 字段 image 或 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>

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

有谁能够为我指出正确的方向,或者为我指出如何实现此目标的教程或类似内容?

谢谢,

马特

I want to export data from a table to a specifically formatted XML file. I am fairly new to XML files, so what I am after may be quite obvious but I just cant find what I am looking for on the net.

The format of the XML results I need are:

    <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>

My table structure is:

name VARCHAR(50),
description VARCHAR(255),
startDate DATETIME,
endDate DATETIME

(I am not too interested in the XML fields image or isDuration at this point in time).

I have tried:

SELECT [name]
           ,[description]
           ,[startDate]
           ,[endTime]

  FROM [testing].[dbo].[time_timeline]
  FOR XML RAW('event'), ROOT('data'), type

Which gives me:

<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>

What I am missing, is the description needs to be outside of the event attributes, and there needs to be a tag.

Is anyone able to point me in the correct direction, or point me to a tutorial or similar on how to accomplish this?

Thanks,

Matt

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

三生池水覆流年 2024-09-08 19:03:41

这应该可以完成工作:

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 结构即可。

This should do the job:

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

Things to note:

  • In order to get description as the text content of event, we have to 'step up' a level and use PATH(''), and specify the name event in the alias for all columns
  • All attribute-centric columns must come before all non-attribute-centric columns

For learning this stuff (or at least getting an idea of how to do what you want), see the docs for FOR XML and just play around with your own tables and desired XML structures.

执手闯天涯 2024-09-08 19:03:41

考虑切换到 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')

Consider switching to FOR XML PATH (see http://msdn.microsoft.com/en-us/library/ms189885.aspx for documentation)

A very partial example:

SELECT
    [name] 
   ,[description] 
   ,[startDate]   "@start"
   ,[endTime]     "@end"
  FROM [testing].[dbo].[time_timeline] 
  FOR XML PATH('event'), ROOT('data')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文