XML-添加不在根目录中的名称空间

问题描述

我需要在具有这种格式的SQL Server中构建XML。您可以看到第一行有两个XMLNAMESPACES,但位置旁边还有第三个。

<arrayofstuff xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/ACME.Domain.Core.ComplexTypes">
  <stuff>
    <Description>blue</Description>
    <Location xmlns:d3p1="http://schemas.datacontract.org/2004/07/ACME.Infrastructure.CodeValues">
      <d3p1:Code>64</d3p1:Code>
      <d3p1:Description>Balloons</d3p1:Description>
    </Location>
  </stuff>
</arrayofstuff>

这是我到目前为止的内容,并提供了一些示例数据。看起来在第一个查询中有一个嵌套的XML查询,但是我似乎无法第二次使用WITH语句,因为它必须是批处理中的第一个命令,因此我不确定该怎么做

IF EXISTS(SELECT 1 FROM sys.tables WHERE object_id = OBJECT_ID('myTable'))
BEGIN;
    DROP TABLE [myTable];
END;
GO

CREATE TABLE [myTable] (
    [myTableID] INTEGER NOT NULL IDENTITY(1,1),[Description] VARCHAR(MAX) NULL,[sourceID] INTEGER NOT NULL,[Location] VARCHAR(255) NULL,[Code] VARCHAR(255) NULL,[Location_Desc] VARCHAR(255) NULL,PRIMARY KEY ([myTableID])
);
GO

INSERT INTO myTable([SourceID],[Description],[Location],[Code],[Location_Desc])
VALUES(3,'yellow','Oxford County','64','list'),(3,'blue','Fraser Lake',(2,'red','San Marcello Pistoiese','green','Gembloux','Yeongcheon','list')

GO

WITH XMLNAMESPACES (default 'http://schemas.datacontract.org/2004/07/ACME.Domain.Core.ComplexTypess','http://www.w3.org/2001/XMLSchema-instance' as i )
SELECT 
[sourceID],cast(stuff((
 SELECT
[Description] as [Description],[Code] AS [Location/Code],[Location_Desc] AS [Location/Description]
FROM [myTable] mnbm
where mnbm.[sourceID] = p.[sourceID]
for xml path('stuff'),root ('arrayofstuff')
),1,'') as xml) as Ids
from [myTable]  p
group by 
p.[sourceID]

这是我当前输出的结果:

<arrayofstuff xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/ACME.Domain.Core.ComplexTypess">
  <stuff>
    <Description>commodo</Description>
    <Location>San Marcello Pistoiese</Location>
  </stuff>
  <stuff>
    <Description>ipsum</Description>
    <Location>Gembloux</Location>
  </stuff>
  <stuff>
    <Description>ipsum</Description>
    <Location>Yeongcheon</Location>
  </stuff>
</arrayofstuff>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)