考慮下面的SQL默認命名空間:與FOR XML PATH
;WITH XMLNAMESPACES(DEFAULT 'http://www.mynamespace.co.uk')
,CTE_DummyData AS (
select id=1
)
select TOP 1
[@ID]=1,
(select top 1 [@ID] = 1 FROM CTE_DummyData FOR XML PATH ('Child'), TYPE)
from CTE_DummyData
FOR XML PATH ('Parent')
Thie返回XML:
<Parent xmlns="http://www.mynamespace.co.uk" ID="1">
<Child xmlns="http://www.mynamespace.co.uk" ID="1" />
</Parent>
我需要的僅僅是根元素上的xmlns聲明返回XML 。例如:
<Parent xmlns="http://www.mynamespace.co.uk" ID="1">
<Child ID="1" />
</Parent>
有沒有辦法做到這一點?
注意: 上面的SQL是實際代碼的極度簡化,它產生了一個複雜的文檔,所以從FOR XML PATH中改變並不是一個真正的選擇,沒有給我幾天的額外工作。要在整個文件的頂層明確要求有NS,並且所有的孩子都應該沒有。
我找不到方法,但他們應該有相同的含義 - 爲什麼你不能使用第一種形式? –
@Damien:這是數據遷移過程的一部分。雖然第一個文檔意味着相同(如您所說),但當我們將其傳遞到(第三方)導入Web服務時,它不起作用。我認爲問題在於它使用了子查詢。如果您使用單個查詢並使用'[Child/@ ID]'定義Child元素,那麼它可以正常工作,但這需要對代碼進行一些重新思考(我已繼承) –