Как добавить атрибуты для узлов XML в SQL Server 2005 - PullRequest
4 голосов
/ 07 декабря 2011

Если бы я хотел добавить атрибут к записи корневого элемента, могу ли я сделать это со стороны sql?

SELECT top 1 'text' as nodeA
                from test as z
FOR XML AUTO, ELEMENTS, root('record')

Я хотел бы создать xml следующим образом:

 <Root attribute="value">
     <z>
         <NodeA>text</NodeA>
     </z>
 </Root>

Ответы [ 3 ]

8 голосов
/ 08 декабря 2011

Используйте новый синтаксис FOR XML PATH:

SELECT TOP 1 
   'someValue' AS '@Attribute',
   'text' as 'z/NodeA'
FROM dbo.Test
WHERE....
FOR XML PATH('YourElement'), ROOT('Root')

Это даст что-то вроде

<Root>
   <YourElement Attribute="someValue">
      <z>
         <NodeA>text</NodeA>
      </z>
   </YourElement>
</Root>

Подробнее об этом здесь:

1 голос
/ 26 сентября 2012

Ваш пример не выполняет то, что запрашивается.

Запрос:

<Root attribute="someValue">
   <YourElement>
      <z>
         <NodeA>text</NodeA>
      </z>
   </YourElement>
</Root>

Ваш ответ:

<Root>
   <YourElement Attribute="someValue">
      <z>
         <NodeA>text</NodeA>
      </z>
   </YourElement>
</Root>

Я делаю нечто подобное и использую PowerShell для очистки файла перед его сохранением:

причина очистки 1: https://connect.microsoft.com/SQLServer/feedback/details/265956/suppress-namespace-attributes-in-nested-select-for-xml-statements

скраб причина 2: ЭТО

0 голосов
/ 29 августа 2013
SELECT 
      'someValue' AS '@Attribute',
      (SELECT TOP 1 
              'text' as 'z/NodeA'
               FROM dbo.Test
               WHERE....
               FOR XML PATH('YourElement')
       ) 
FOR XML PATH('ROOT');

Он должен создать XML с атрибутом связи ROOT и списком ... внутри.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...