考虑以下 SQL:
;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的,并且所有的孩子都应该没有。