У меня есть пользовательская таблица, в которой хранится информация о пользователе.
Create table #Users (
userid uniqueidentifier,
NationalID int,
Firstname varchar (25),
LastName varchar(25),
suffix varchar(25),
DOB datetime,
Gender nvarchar(2),
position nvarchar(200)
)
INSERT INTO #USERS
Values
('8F6390AF-8C7C-4036-AEEC-7152161A23A7',
1234567,
'Bob',
'gates',
'II',
'01-01-1987',
'M',
'Manager')
Я хочу вернуть результат в XML, используя For XML Raw, и у меня есть пространство имен по умолчанию (https://Somthing), которое я хочу на корневом узле, используя приведенный ниже подзапрос
WITH xmlnamespaces(Default 'https://Somthing')
SELECT
(
SELECT GetDate() as AsOfDate, NationalID,
(
SELECT FirstName,
LastName,
Suffix
FROM #Users AS [Name]
WHERE [Name].UserID= u.UserID
FOR XML RAW('Name'), TYPE,ELEMENTS
),
DOB,
Gender
FROM #Users AS EmployeeInfo
WHERE EmployeeInfo.UserID = u.UserID
FOR XML Raw ('EmployeeInfo'), TYPE, ELEMENTS)
From #Users u
WHERE u.userid = '8F6390AF-8C7C-4036-AEEC-7152161A23A7'
FOR XML Raw ('Transcript'),Type, ELEMENTS XSINIL
В результате я получаю избыточное пространство имен во всех узлах.Как я должен удалить эти избыточные в других узлах и оставить его только сверху
<Transcript xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xmlns="https://Somthing">
<EmployeeInfo xmlns="https://Somthing">
<AsOfDate>2018-12-13T17:54:11.183</AsOfDate>
<NationalID>1234567</NationalID>
<Name xmlns="https://Somthing">
<FirstName>Bob</FirstName>
<LastName>gates</LastName>
<Suffix>II</Suffix>
</Name>
<DOB>1987-01-01T00:00:00</DOB>
<Gender>M</Gender>
</EmployeeInfo>
</Transcript>
Я хочу, чтобы мой результат был примерно таким, как показано ниже
<Transcript xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://Somthing">
<EmployeeInfo>
<AsOfDate>2018-12-13T17:54:11.183</AsOfDate>
<NationalID>1234567</NationalID>
<Name>
<FirstName>Bob</FirstName>
<LastName>gates</LastName>
<Suffix>II</Suffix>
</Name>
<DOB>1987-01-01T00:00:00</DOB>
<Gender>M</Gender>
</EmployeeInfo>
</Transcript>
Thanks