powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Парсим XML
3 сообщений из 3, страница 1 из 1
Парсим XML
    #39874484
dm_fillipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Столкнулся с проблемой, не могу разобрать xml файл
Текст xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
<?xml version="1.0"?>
<cards>
	<card>
		<card_id>113</card_id>
		<user_buhta_id>1617</user_buhta_id>
		<checking_buhta_id>1617</checking_buhta_id>
		<types>
			<type>28791</type>
		</types>
		<comment>ddddssss 123</comment>
	</card>
	<card>
		<card_id>112</card_id>
		<user_buhta_id>1617</user_buhta_id>
		<checking_buhta_id>1617</checking_buhta_id>
		<types>
			<type>28790</type>
		</types>
		<comment>qwwqqewq</comment>
	</card>
	<card>
		<card_id>109</card_id>
		<user_buhta_id>1617</user_buhta_id>
		<checking_buhta_id>1617</checking_buhta_id>
		<types>
			<type>28790</type>
			<type>28791</type>
		</types>
		<comment/>
	</card>	
</cards>



Выполняю запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DECLARE @xml XML
SELECT @xml = BulkColumn
FROM OPENROWSET(BULK 'C:\cards_26_09_2019.xml', SINGLE_BLOB) x

SELECT b.n.value('(*:card_id/text())[1]', 'INT') AS card_id
, b.n.value('(*:user_buhta_id/text())[1]', 'INT') AS user_buhta_id
, b.n.value('(*:checking_buhta_id/text())[1]', 'INT') AS checking_buhta_id
, b.n.value('(*:types/*:type/text())[1]', 'INT') AS type
, b.n.value('(*:comment/text())[1]', 'NVARCHAR(200)') AS comment    
FROM @xml.nodes('//*:card') b(n)



Выводится 3 записи. А мне надо что бы запись с id 109 выводилась 2 раза с разными типами.
Помогите пожалуйста.
...
Рейтинг: 0 / 0
Парсим XML
    #39874488
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT b.n.value('(card_id/text())[1]', 'INT') AS card_id
     , b.n.value('(user_buhta_id/text())[1]', 'INT') AS user_buhta_id
     , b.n.value('(checking_buhta_id/text())[1]', 'INT') AS checking_buhta_id
     , t.c.value('(text())[1]', 'INT') AS type
     , b.n.value('(comment/text())[1]', 'NVARCHAR(200)') AS comment
FROM @x.nodes('cards/card') b(n)
CROSS APPLY b.n.nodes('types/type') t(c)
...
Рейтинг: 0 / 0
Парсим XML
    #39874490
dm_fillipov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Syrovatchenko, спасибо большое за помощь!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Парсим XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]