Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Импорт XML со схемой.  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1052
Есть xml, который надо загрузить в БД, но проблема в том, что ноды написаны с использованием префиксов. Не понятно, как правильно написать синтаксис для такого случая, поиск не помог.

Пишу так:
DECLARE @BasketXml NVARCHAR(MAX)
DECLARE @BasketPointer INT

SET @BasketXml = '<?xml version="1.0" ?>
					<tns:basket xmlns:tns="http://mds.nyxdata.com/vrxml/2009/1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mds.nyxdata.com/vrxml/2009/1.2 http://mds.nyxdata.com/vrxml/2009/1.2/VRXML_1.2_beta.xsd" tns:customerId="12345">
					<tns:item tns:productId="a123" quantity="1"/>
					<tns:item tns:productId="b456" quantity="3"/>
					<tns:item tns:productId="c789" quantity="2"/>
					</tns:basket>'

EXEC sp_xml_preparedocument @BasketPointer OUTPUT, @BasketXml

DECLARE @BasicBasket TABLE
(
ProductId NVARCHAR(20),
Quantity INT
)

INSERT @BasicBasket
SELECT productId ProductId, quantity Quantity
FROM OPENXML (@BasketPointer, '/tns:basket/tns:item', 1)
WITH (productId NVARCHAR(20), quantity INT)

EXEC sp_xml_removedocument @BasketPointer

SELECT * FROM @BasicBasket


Выдается ошибка: XML parsing error: Reference to undeclared namespace prefix: 'tns'.

Не понятно, где корректно указать префикс для неймспейса.
4 июл 13, 17:45    [14523906]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML со схемой.  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
> поиск не помог.

собственно, достаточно открыть в документации статью по sp_xml_preparedocument.
http://msdn.microsoft.com/en-us/library/ms187367.aspx

DECLARE @BasketXml NVARCHAR(MAX)
DECLARE @BasketPointer INT

SET @BasketXml = '<?xml version="1.0" ?>
					<tns:basket xmlns:tns="http://mds.nyxdata.com/vrxml/2009/1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mds.nyxdata.com/vrxml/2009/1.2 http://mds.nyxdata.com/vrxml/2009/1.2/VRXML_1.2_beta.xsd" tns:customerId="12345">
					<tns:item tns:productId="a123" quantity="1"/>
					<tns:item tns:productId="b456" quantity="3"/>
					<tns:item tns:productId="c789" quantity="2"/>
					</tns:basket>'

declare @ns nvarchar(max)
set @ns = '<root xmlns:tns="http://mds.nyxdata.com/vrxml/2009/1.2"/>'

EXEC sp_xml_preparedocument @BasketPointer OUTPUT, @BasketXml, @ns

DECLARE @BasicBasket TABLE
(
ProductId NVARCHAR(20),
Quantity INT
)

INSERT @BasicBasket
SELECT [tns:productId] ProductId, quantity Quantity
FROM OPENXML (@BasketPointer, '/tns:basket/tns:item', 1)
WITH ([tns:productId] NVARCHAR(20), quantity INT)

EXEC sp_xml_removedocument @BasketPointer

SELECT * FROM @BasicBasket
4 июл 13, 17:56    [14523964]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML со схемой.  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1052
daw,

Спасибо
5 июл 13, 10:49    [14526060]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить