Изменить имя элемента XML в SQL Server - PullRequest
3 голосов
/ 25 февраля 2011

Как изменить имя элемента с Cust на Customer?

<Cust id="1">
  <Name>aaaaaaaaaa</Name>
  <Desc>bbbbbbbbbb</Desc>
</Cust>

Когда я использую следующее утверждение

select @myXml.query('/node()[1]/node()') for xml raw('Customer')

sql удаляет атрибуты

<Customer>
  <Name>aaaaaaaaaa</Name>
  <Desc>bbbbbbbbbb</Desc>
</Customer>

Ответы [ 2 ]

1 голос
/ 25 февраля 2011

Попробуйте это:

SELECT
    @myXml.value('(/Cust/@id)[1]', 'int') AS '@id',
    @myXml.query('/node()[1]/node()') 
FOR XML PATH('Customer')

Дает мне вывод:

<Customer id="1">
  <Name>aaaaaaaaaa</Name>
  <Desc>bbbbbbbbbb</Desc>
</Customer>

С помощью FOR XML PATH вы можете довольно легко "восстановить" тот атрибут, который потерян впреобразование.

1 голос
/ 25 февраля 2011

Вы можете использовать replace:

replace(replace(@YourXml, '<Cust id', '<Customer id)', '</Cust>', '</Customer>')

Это довольно безопасно, поскольку < недопустимо в качестве данных в XML, оно будет выглядеть как &lt; или последовательность ASCII или UNICODE.

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