Мы сталкиваемся с необычной проблемой с SQL Server 2005/2008 с использованием FOR XML с фрагментами xml и namespaces. Вот вопрос, о котором идет речь.Как подавить пустые пространства имен с FOR XML на сервере Sql
WITH XMLNAMESPACES (
DEFAULT 'http://tempuri.org/newincomingxml.xsd',
'http://tempuri.org/newincomingxml.xsd' as [xsi],
'http://tempuri.org/newincomingxml.xsd' as [a]
)
SELECT
[@a:Source], [AddressCount], [ConsumerCount], [EmailCount], [PermissionCount]
, (
SELECT
[Consumer]
FROM tbcExportBRC_Current xmlmaster
FOR XML PATH(''), ROOT('Consumers'), TYPE
)
FROM tbcExportBRCBatch_Current xmlroot
FOR XML PATH('Datafeed'), TYPE
[Клиент] поле представляет собой фрагмент XML. Когда я запускаю это, я получаю.
<Datafeed xmlns:a="http://tempuri.org/newincomingxml.xsd" xmlns:xsi="http://tempuri.org/newincomingxml.xsd" xmlns="http://tempuri.org/newincomingxml.xsd" a:Source="DSD">
<AddressCount>0</AddressCount>
<ConsumerCount>0</ConsumerCount>
<EmailCount>0</EmailCount>
<PermissionCount>0</PermissionCount>
<Consumers xmlns:a="http://tempuri.org/newincomingxml.xsd" xmlns:xsi="http://tempuri.org/newincomingxml.xsd" xmlns="http://tempuri.org/newincomingxml.xsd">
<Consumer>
<ConsumerType xmlns="">Individual</ConsumerType>
<FirstName xmlns="">STEVE</FirstName>
<LastName xmlns="">SMITH</LastName>
</Consumer>
</Consumers>
</Datafeed>
Если вы заметили, дети в теге имеют Xmlns = "" в них. Если мы посмотрим на фрагмент непосредственно в таблице, это будет выглядеть так.
<ConsumerType>Individual</ConsumerType>
<FirstName>STEVE</FirstName>
<LastName>SMITH</LastName>
можно удалить пространство имен по умолчанию
DEFAULT 'http://tempuri.org/newincomingxml.xsd',
Он удаляет Xmlns = «», но мы должны иметь в файле. Есть идеи?
Это имеет смысл, что вы говорите. Я редактирую свой оригинальный пост, потому что понял, что фрагмент, который у меня есть в столбце «Потребитель», не прав. Как я могу указать, какое пространство имён принадлежит тоже, не помещая xmlns = "http://tempuri.org/newincomingxml.xsd" в каждую строку? –
'<Потребители ... xmlns: c =" http://tempuri.org/newincomingxml.xsd "...> ... ...' –