Это полностью зависит от того, что вы хотите извлечь из вашего канала ....
Я предполагаю, что ваш XML хранится в переменной SQL Server, например:
DECLARE @input XML
Этот запрос будет перечислять все узлы <participants>
и извлекать всю информацию об одном участнике - вы можете использовать его для вставки этих участников в таблицу:
SELECT
Feed.Participant.value('(participant_name)[1]', 'varchar(50)') AS ParticipantName,
Feed.Participant.value('(contestantnum)[1]', 'int') AS ContestantNum,
Feed.Participant.value('(rotnum)[1]', 'int') AS RotNum,
Feed.Participant.value('(visiting_home_draw)[1]', 'varchar(50)') AS VisitingHome
FROM
@input.nodes('/line_feed/events/event/participants/participant') AS Feed(Participant)
Вывод:
ParticipantName ContestantNum RotNum VisitingHome
R. Ram 4303 4303 Visiting
K. Beck 4304 4304 Home
Этот второй запрос перечисляет узлы <period>
в вашем фиде - опять же, он извлекает некоторую информацию, которую вы можете использовать для хранения в таблице базы данных:
SELECT
Feed.Period.value('(period_number)[1]', 'int') AS PeriodNumber,
Feed.Period.value('(period_description)[1]', 'varchar(50)') AS PeriodDescription,
Feed.Period.value('(period_status)[1]', 'varchar(50)') AS Status,
Feed.Period.value('(period_update)[1]', 'varchar(50)') AS Update,
Feed.Period.value('(moneyline_maximum)[1]', 'decimal(18,4)') AS MoneylineMaximum
FROM
@input.nodes('/line_feed/events/event/periods/period') AS Feed(Period)
Вывод:
PeriodNumber PeriodDescription Status Update MoneylineMaximum
0 Game I open 1500.0000
0 Game I open 250.0000
1 1st Set I open 250.0000