If I understand what you need, here's a query you want:
select
T.C.value('@DateTimeGMT', 'varchar(100)') as DateTimeGMT,
T.C.value('@Branch', 'varchar(100)') as Branch,
T.C.value('@BranchID', 'int') as BranchID,
T.C.value('@League', 'varchar(100)') as League,
T.C.value('@LeagueID', 'int') as LeagueID,
T.C.value('@IsOption', 'int') as IsOption,
T.C.value('@EventType', 'int') as EventType,
T.C.value('@MEID', 'int') as MEID,
T.C.value('@QAID', 'int') as QAID,
T.C.value('@EventName', 'varchar(500)') as EventName,
T.C.value('(Participants/Participant1)[1]/@Name', 'varchar(100)') as Home,
T.C.value('(Participants/Participant2)[1]/@Name', 'varchar(100)') as Away,
T.C.value('(MoneyLine)[1]/@Home', 'varchar(5)') as [1],
T.C.value('(MoneyLine)[1]/@Draw', 'varchar(5)') as [X],
T.C.value('(MoneyLine)[1]/@Away', 'varchar(5)') as [2],
T.C.value('(Spread)[1]/@Home_Points', 'float') as Spread_Home_Points,
T.C.value('(Spread)[1]/@Home_Odds', 'float') as Spread_Home_Odds,
T.C.value('(Spread)[1]/@Away_Points', 'float') as Spread_Away_Points,
T.C.value('(Spread)[1]/@Away_Odds', 'float') as Spread_Away_Odds,
T.C.value('(Spread)[1]/@Away_Odds', 'float') as Spread_Away_Odds,
T.C.value('(Total)[1]/@Points', 'float') as Total_Points,
T.C.value('(Total)[1]/@Over', 'float') as Lart,
T.C.value('(Total)[1]/@Under', 'float') as Posht,
P.C.value('@Name', 'varchar(100)') as Rubrika,
P.C.value('(Odds)[1]/@OddsValue', 'varchar(100)') as Koefic
from @x.nodes('Events/Event') as T(C)
outer apply T.C.nodes('Participants/Participant') as P(C)
Note that is parses Events/Event
first and then duplicate rows for each Participants/Participant
found.