У меня есть этот XML structure.I использовать следующий SQL, чтобы считывать значения, но он не работаетсинтаксического анализа XML в SQL Server
DECLARE @x XML =
'<Events>
<Event DateTimeGMT="25/10/2013 18:45:00" Branch="Soccer" Sport="Soccer" BranchID="1" League="England - Championship" LeagueID="10099" ID="5693075" IsOption="0" EventType="0" MEID="2673883">
<Participants>
<Participant1 Name="Middlesbrough" Home_Visiting="Home" />
<Participant2 Name="Doncaster" Home_Visiting="Visiting" />
</Participants>
<MoneyLine Home="1.69" Draw="3.7" Away="5" />
<Spread Home_Odds="1.885" Home_Points="-0.75" Away_Points="0.75" Away_Odds="1.962" />
<Total Points="2.75" Over="2.06" Under="1.763" />
</Event>
<Event DateTimeGMT="25/10/2013 18:45:00" Branch="Soccer" Sport="Soccer" BranchID="1" League="England - Championship" LeagueID="10099" ID="5693993" IsOption="1" EventType="200" MEID="2673883">
<Participants>
<Participant1 Name="Middlesbrough" Home_Visiting="Home" />
<Participant2 Name="Doncaster" Home_Visiting="Visiting" />
</Participants>
<Total Points="4.5" Over="5.75" Under="1.125" />
</Event>
</Events>
'
DECLARE @iDoc INT
EXECUTE sp_xml_preparedocument @iDoc OUTPUT, @x
SELECT *
FROM OPENXML(@iDoc,'/Events/Event')
WITH (
ID int '@ID',
DateTimeGMT [varchar](100) '@DateTimeGMT',
Branch [varchar](100) '@Branch',
Sport [varchar](100) '@Sport',
BranchID int '@BranchID',
League [varchar](100) '@League',
LeagueID int '@LeagueID',
IsOption int '@IsOption',
EventType int '@EventType',
MEID int '@MEID',
QAID int '@QAID',
EventName [varchar](500) '@EventName',
Home [varchar](100) '../Event/Participants/Participant1/@Name',
Away [varchar](100) '../Event/Participants/Participant2/@Name',
[1] [varchar](5) '../Event/MoneyLine/@Home',
[X] [varchar](5) '../Event/MoneyLine/@Draw',
[2] [varchar](5) '../Event/MoneyLine/@Away',
Spread_Home_Points float '../Event/Spread/@Home_Points',
Spread_Home_Odds float '../Event/Spread/@Home_Odds',
Spread_Away_Points float '../Event/Spread/@Away_Points',
Spread_Away_Odds float '../Event/Spread/@Away_Odds',
Total_Points float '../Event/Total/@Points',
Lart float '../Event/Total/@Over',
Posht float '../Event/Total/@Under'
)
EXECUTE sp_xml_removedocument @iDoc
Но это doent дать правильный ответ. Во второй строке, которая не отличает MoneyLine, она повторяет первые значения строк.
Значения, обозначенные знаком круга, пусты. Любая помощь, пожалуйста?
Вы можете сделать вывод доступным для чтения/просмотра/больше? –
Я немного порезал картинку – user1361208