У меня есть CustoInfo XML, который хранится во временной таблице из другой более крупной таблицы для некоторых манипуляций. Я хочу разбить корневой узел и вернуть все элементы, лежащие ниже него, без пространств имён, добавленных к любому из корневых дочерних элементов.Разбить корневой узел из XML
`DECLARE @tempCustomerInfo TABLE
(
ID INT IDENTITY(1,1),
CustInfo XML NULL
)
DECLARE @CustInfo XML
SET @CustInfo = '<Customer xmlns="Corp.Info.Customer"><Name><FName>Mark</FName> <MName>A</MName><LName>Antony</LName></Name><Address><Street>Clare</Street><City>Clarkson</City></Address></Customer>'
INSERT INTO @tempCustomerInfo SELECT @CustInfo
;WITH XMLNAMESPACES(DEFAULT 'Corp.Info.Customer')
SELECT CustInfo.query('/Customer/*') FROM @tempCustomerInfo`
Он возвращает результат, как показано ниже, - с пространством имён, добавленным в каждый элемент.
`<p1:Name xmlns:p1="Corp.Info.Customer">
<p1:FName>Mark</p1:FName>
<p1:MName>A</p1:MName>
<p1:LName>Antony</p1:LName>
</p1:Name>
<p2:Address xmlns:p2="Corp.Info.Customer">
<p2:Street>Clare</p2:Street>
<p2:City>Clarkson</p2:City>
</p2:Address>`
Я требую чистого XML как этот
`<Name >
<FName>Mark</FName>
<MName>A</MName>
<LName>Antony</LName>
</Name>
<Address >
<Street>Clare</Street>
<City>Clarkson</City>
`
В любом случае для достижения этой цели. Заранее спасибо.
Как примечание стороны - если вы окажетесь необходимости лишить информации пространства имен из XML, это обычно признак что-то пойдет не так-то - информация пространства имен является неотъемлемой частью идентичности элементов. –
Вот что я на самом деле пытаюсь достичь. У меня было бы несколько записей и их нужно было бы разместить (имя и адрес) под одним единственным корнем (CustomerDetails). Как только у меня появятся эти данные, я буду использовать FOR XML AUTO, ELEMENTS, чтобы разместить их в одном документе с другим пространством имен. –