3

特定の名前空間が定義された既存のSQLServer2005データベーステーブルに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 に答える