У меня есть структура xml в существующей таблице базы данных SQL Server 2005 с определенным определенным пространством имен, мне нужно запросить XML и в процессе изменить префикс пространства имен, чтобы он стал пространством имен по умолчанию. В старом xml есть пространство имен, определенное в корневом узле и дочерних узлах, и я знаю, как достаточно легко заменить корень, но не в пространстве имен дочернего узла.
Текущие данные:
<sg:Settings xmlns:sg="uri:mynamespace">
<sg:SomeData xmlns:sg="uri:mynamespace"/>
</sg:Settings>
Использование SQL:
WITH XMLNAMESPACES
('uri:mynamespace' as sg)
SELECT
settingsNode.query('<Settings xmlns="uri:mynamespace"> { sg:SomeData } </Settings> ')
FROM
SettingsTable CROSS APPLY
SettingsXml.nodes('/sg:Settings') T(settingsNode)
Я могу получить следующее:
<Settings xmlns="uri:mynamespace">
<sg:SomeData xmlns:sg="uri:mynamespace"/>
</Settings>
Но я пытаюсь получить это:
<Settings xmlns="uri:mynamespace">
<SomeData/>
</Settings>
Есть ли способ объединения пространств имен с использованием SQL XQuery?