1

使用以下代码创建 xml 节点:

set @imageListXml = (
    select 
        'IMG' + CAST( m.entry_id AS VARCHAR) as '@id',
        (select title from titles where entry_id=m.tid) as 'textelements/title',
        'TEST' as 'references/reference/@body',
        'IMG' + CAST( m.entry_id AS VARCHAR) as 'references/reference/@value'

     from media m   

        )
    FOR XML PATH('image'), root('imagelist')
    )

它创建了类似的东西:

<imagelist>
  <image id="IMG1111">
    <textelements>
       <title>Test 1111</title>
    </textelements>
    <references>
      <reference body="TEST" value="IMG1111" />
    </references>
  </image>
</imagelist>

我怎样才能把价值属性放在第一位,反之亦然?我认为这取决于我在 select 语句中首先陈述的内容。我对么?

4

1 回答 1

0
set @imageListXml = (
  select 'IMG' + CAST( m.entry_id AS VARCHAR) as '@id',
    (select title from titles where entry_id=m.tid) as 'textelements/title',
    'IMG' + CAST( m.entry_id AS VARCHAR) as 'references/reference/@value',
    'TEST' as 'references/reference/@body' 
  from media m
  FOR XML PATH('image'), root('imagelist')
)

将在value属性之前返回body属性。但是,我不认为这是在任何地方指定的,因为 XML 元素中的属性是无序的。它们总是按名称引用,而不是按索引。

也就是说,某些排序比其他排序更易于阅读/更漂亮,因此如果人们将目光投向生成的 XML,那么确保更好的属性排序是有意义的。

于 2013-08-16T15:24:05.613 回答