【发布时间】:2016-03-31 13:36:29
【问题描述】:
我正在使用FOR XML EXPLICIT 生成一个 XML 文档:
declare @MyTable table (value xml);
insert into @MyTable values
('<foo bar="data1">content1</foo>')
,('<foo bar="data2">content2</foo>')
,('<foo bar="data3">content3</foo>');
select 1 as Tag, null as Parent
, value as [x!1!!xml]
from @MyTable
for xml explicit;
并得到这样的回应:
<x>
<foo bar="data1" xmlns="">content1</foo>
</x>
<x>
<foo bar="data2" xmlns="">content2</foo>
</x>
<x>
<foo bar="data3" xmlns="">content3</foo>
</x>
问题是我不需要xmlns 属性。
我找到了一个解决方案,但它似乎是一个杂项。
select 1 as Tag, null as Parent
, cast (value as varchar(200)) as [x!1!!xml]
from @MyTable
for xml explicit;
有没有更优雅的方法来解决这个问题?
请勿使用FOR XML PATH/RAW/AUTO提供服务。
EXPLICIT 模式是必须的。
【问题讨论】:
-
你能解释一下这个限制吗必须使用显式模式和不提供使用 FOR XML PATH/RAW/AUTO
-
使用 EXPLICIT 模式将层次结构数据转换为 xml 要容易得多。并且作为一个实验。
标签: sql sql-server xml for-xml for-xml-explicit