3

我在现有的 SQL Server 2005 数据库表中有一个定义了特定命名空间的 xml 结构,我需要查询 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 合并命名空间?

4

1 回答 1

2

如果你想用空格替换它

update tbl_Archive set XML.modify('delete /*:Document/*:Volume[text()]/@xmlns:sg')
于 2011-12-08T09:38:47.627 回答