【发布时间】:2013-11-28 22:16:22
【问题描述】:
当我运行我的查询时,命名空间添加了根元素,但第二个元素我也有 xmlns="" ......我想删除它......我需要添加命名空间前缀一些元素。
我提供了一个例子:
declare @xml_h as xml
declare @xml_d as xml
select @xml_h = (
select NewID() as [UID]
for XML PATH('Head')
)
select @xml_d = (
select NULL,
(
select 'V00001' as [ID],
'Some name' as [Name]
for XML PATH('SubData'), TYPE
)
for XML PATH('Data')
)
;with XmlNameSpaces (DEFAULT 'uri_1', 'uri_2' as t)
select @xml_h, @xml_d for XML PATH(''), ROOT('ROOT')
结果是:
<ROOT xmlns:t="uri_2" xmlns="uri_1">
<Head xmlns="">
<UID>B12B8836-2061-4934-AC06-67D34579D1A6</UID>
</Head>
<Data xmlns="">
<SubData>
<ID>V00001</ID>
<Name>Some name</Name>
</SubData>
</Data>
</ROOT>
但我需要这个:
<ROOT xmlns:t="uri_2" xmlns="uri_1">
<Head>
<t:UID>B12B8836-2061-4934-AC06-67D34579D1A6</t:UID>
</Head>
<Data>
<t:SubData>
<t:ID>V00001</t:ID>
<t:Name>Some name</t:Name>
</t:SubData>
</Data>
</ROOT>
有没有什么办法可以去掉不必要的空白命名空间并添加命名空间前缀?
谢谢
【问题讨论】:
-
也许您可以将
t:添加到查询中的列名中,例如... select NewID() as [t:UID]等等? sql server 应该如何知道命名空间前缀是?
标签: sql-server xml tsql sql-server-2005 xml-namespaces