Я пытаюсь прочитать XML-файл с SQL Server. Я думаю, что это проблема с пространством имен .. Это пример моего простого XML:Пространство имен SQL Server
<?xml version="1.0"?>
<ArrayOfStatistica xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.datacontract.org/2004/07/LiveUpdateWS">
<Statistica>
<BuildFinale>68</BuildFinale>
<BuildIniziale>1</BuildIniziale>
<DataInserimento>2014-11-21T09:34:25.387</DataInserimento>
<IdCliente>-1</IdCliente>
<IdOperazione>4</IdOperazione>
<IdRivenditore>-1</IdRivenditore>
<IdTipoProdotto>-1</IdTipoProdotto>
<IdUtente>2</IdUtente>
<IdVersione>3</IdVersione>
</Statistica>
<Statistica>
<BuildFinale>68</BuildFinale>
<BuildIniziale>1</BuildIniziale>
<DataInserimento>2014-11-21T09:37:43.84</DataInserimento>
<IdCliente>-1</IdCliente>
<IdOperazione>4</IdOperazione>
<IdRivenditore>-1</IdRivenditore>
<IdTipoProdotto>-1</IdTipoProdotto>
<IdUtente>2</IdUtente>
<IdVersione>3</IdVersione>
</Statistica>
</ArrayOfStatistica>
С помощью следующего кода:
;WITH XMLNAMESPACES ('http://schemas.datacontract.org/2004/07/LiveUpdateWS"' AS ArrayOfStatistica)
SELECT
(SELECT Child.value('(IdStatistica)[1]', 'bigint')),
(SELECT Child.value('(IdUtente)[1]', 'int')),
(CASE WHEN Child.value('(IdRivenditore)[1]', 'int') = -1 THEN NULL else (SELECT Child.value('(IdRivenditore)[1]', 'int')) end),
(CASE WHEN Child.value('(IdCliente)[1]', 'int') = -1 THEN NULL else (SELECT Child.value('(IdCliente)[1]', 'int')) end),
(SELECT Child.value('(DataInserimento)[1]', 'datetime')),
(CASE WHEN Child.value('(IdTipoProdotto)[1]', 'int') = -1 THEN NULL else (SELECT Child.value('(IdTipoProdotto)[1]', 'int')) end),
(SELECT Child.value('(IdVersione)[1]', 'int')),
(SELECT Child.value('(BuildIniziale)[1]', 'bigint')),
(SELECT Child.value('(BuildFinale)[1]', 'bigint')),
(SELECT Child.value('(IdOperazione)[1]', 'int'))
FROM
@xmlfile.nodes('ArrayOfStatistica/Statistica') AS N(Child)
Я не получить любое значение из SELECT.
Как установить пространство имен для этого xml-файла? Если удалить строки для пространства имен XML (http://schemas.datacontract.org/2004/07/LiveUpdateWS "Xmlns: я =" http://www.w3.org/2001/XMLSchema -instance «>) все работает отлично
Почему вы '(SELECT Child.value (...)) 'в каждом столбце, а не просто' Child.value (...) '? Почему, по-вашему, вам нужна строка пространства имен? (Я имею в виду, если он работает без него, тогда просто без него?) –