SQL 嵌套 xml 有额外的 xmlns="" 属性

问题描述 投票:0回答:1

我正在编写一段sql代码来生成xml。这是我的代码:

DECLARE @inner xml = '<inner>test</inner>';

WITH XMLNAMESPACES (
    DEFAULT 'urn:www.agxml.org:schemas:all:4:0',
    'http://www.w3.org/2001/XMLSchema-instance' AS xsi,
    'http://www.w3.org/2001/XMLSchema' AS xsd
)
SELECT
    @inner 
    FOR XML PATH('root'), TYPE

这就是我得到的(为了可读性而添加换行符):

<root
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="urn:www.agxml.org:schemas:all:4:0"
>
  <inner xmlns="">test</inner>
</root>

您可以看到

<inner xmlns="">test</inner>
有一个额外的
xmlns=""

我尝试将其删除,但做不到。有没有办法只将 xmlns 添加到根目录?

我正在使用 ms sql server。

谢谢你,

sql-server
1个回答
0
投票

您使用的方法似乎有点“奇怪”,只需在一个语句中定义它即可:

WITH XMLNAMESPACES (
    DEFAULT 'urn:www.agxml.org:schemas:all:4:0',
    'http://www.w3.org/2001/XMLSchema-instance' AS xsi,
    'http://www.w3.org/2001/XMLSchema' AS xsd
)
SELECT 'test' as [inner]
FOR XML PATH('root'), TYPE;
© www.soinside.com 2019 - 2024. All rights reserved.