Здравствуйте! Имеется следующий тэмплэйт:
Как, используя T-SQL превратить его в:
PersonalProgramList - корень, PersonalProgram - неограниченное кол-во.
Ответ
Простой способ заменить namespace элемента (средствами XQuery) мне неизвестен.
Если бы исходная схема XML была именно такая как в вопросе (внутри PersonalProgram могут быть только One и Two с каким-то текстом внутри), то можно было бы честно пересобрать исходный XML в нужном формате с помощью FLWOR
declare @xml xml = N'
select
@xml.query(N'
Если же внутри PersonalProgram может быть что угодно, то можно так же с помощью FLWOR пересобрать XML, указав нужный namespace для PersonalProgram, и скопировав всё что внутри. Однако при замене namespace для PersonalProgram у всего что внутри явно укажется xmlns="", который кроме как с помощью REPLACE я не вижу варианта убрать (поэтому мне этот способ не очень нравится):
select
cast(replace(cast(@xml.query(N'
Комментариев нет:
Отправить комментарий