大家早上好,
我有一个使用 FOR XML PATH 输出 .xml 文件的大型查询。我有主要选择,它基本上只代表根,即
select *
from tbl
for xml path ('root'),elements xsinil
然后我在这个主选择中有后续的嵌套选择,即
select
(
select null [level1],
'2' [level2]
from tbl
for xml path('nested1'),type
),
(
select null [level1],
'2' [level2]
from tbl
for xml path('nested2'),type
)
for xml path('root'),elements xsinil
但是,放置在 for xml 路径上的元素 xsinil 参数对包含的子查询没有任何影响,即 Level1 元素只是一个封闭标记。我需要将其显示为 xsi:nil="true"。
我可以通过将元素 xsinil 参数添加到 for xml 路径语句来实现这一点,例如
for xml path('nested1'),type,elements xsinil
这样做的问题是命名空间声明在子查询级别重复。
我可以找到很多使用元素 xsinil 的示例,但没有一个可以在没有重复命名空间声明的情况下应用于子查询。
为了确认,我正在寻找以下输出:
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<nested1>
<level1 xsi:nil="true">
<level2>2</level2>
</nested1>
<nested2>
<level1 xsi:nil="true">
<level2>2</level2>
</nested2>
</root>
希望你能帮忙!