Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server 2008/2012未解析XML Soap_Sql Server_Xml_Soap_Sqlxml - Fatal编程技术网

Sql server SQL Server 2008/2012未解析XML Soap

Sql server SQL Server 2008/2012未解析XML Soap,sql-server,xml,soap,sqlxml,Sql Server,Xml,Soap,Sqlxml,哦,多好的一天啊。我正在尝试在SQLServer中解析一些XML,以前我用过一些非常大的文件,但是对于这些文件,我遇到了最大的问题。实际上,我通过XML进行了递归解析,这样我就可以正确地识别所有的节点,所以我知道我并不疯狂 我的密码是这个 DECLARE @XML XMl SELECT @XML = xmldata from testing where testingID = 3 select T.c.value('Legs[1]', 'varchar(100)') as Legs /*t.

哦,多好的一天啊。我正在尝试在SQLServer中解析一些XML,以前我用过一些非常大的文件,但是对于这些文件,我遇到了最大的问题。实际上,我通过XML进行了递归解析,这样我就可以正确地识别所有的节点,所以我知道我并不疯狂

我的密码是这个

DECLARE @XML XMl

SELECT @XML = xmldata from testing where testingID = 3

select T.c.value('Legs[1]', 'varchar(100)') as Legs
/*t.c.value('(PoolId)[1]', 'varchar(100)') as [Pool],
t.c.value('(./Model/@id)[1]', 'int') ModelID,
t.c.value('(./Note)[1]', 'varchar(100)') Note,
t.c.value('(./Part)[1]', 'varchar(15)') Part*/
from @xml.nodes('/Envelope/Body/GetEventDetailResponse/EventsResponse/EventDetail/Races/Race/Pools/Pool') as T(c)
我留下了一些旧代码,我知道这些代码可以毫无问题地处理旧XML文件,但我把它们注释掉了

XML就是这样

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
  <GetEventDetailResponse xmlns="http://schema.unitedtote.com/ToteLink/2008/06/Program">
     <EventsResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
        <RunId xmlns="http://schema.unitedtote.com/ToteLink/2008/06/Common">2613</RunId>
        <GroupId xmlns="http://schema.unitedtote.com/ToteLink/2008/06/Common">TH1</GroupId>
        <Source xmlns="http://schema.unitedtote.com/ToteLink/2008/06/Common">
           <SystemId>TSG</SystemId>
           <SourceId>TH1TST</SourceId>
        </Source>
        <EventDetail>
           <Races>
              <Race>
                 <Pools>
                    <Pool>
                       <PoolId>WIN</PoolId>
                       <PoolNumber>1</PoolNumber>
                       <PoolName>Win</PoolName>
                       <PoolRaces>1</PoolRaces>
                       <Legs>1</Legs>
                       <Quick>true</Quick>
                       <Box>true</Box>
                       <SingleBetMinimum>2</SingleBetMinimum>
                       <MultipleBetMinimum>2</MultipleBetMinimum>
                       <WagerMinimum>2</WagerMinimum>
                       <Maximum>10000</Maximum>
                       <Probables>true</Probables>
                       <WBMaximum>10000</WBMaximum>
                       <Straight>true</Straight>
                    </Pool>
                    <Pool>
                       <PoolId>PLC</PoolId>
                       <PoolNumber>2</PoolNumber>
                       <PoolName>Place</PoolName>
                       <PoolRaces>1</PoolRaces>
                       <Legs>1</Legs>
                       <Quick>true</Quick>
                       <Box>true</Box>
                       <SingleBetMinimum>2</SingleBetMinimum>
                       <MultipleBetMinimum>2</MultipleBetMinimum>
                       <WagerMinimum>2</WagerMinimum>
                       <Maximum>10000</Maximum>
                       <WBMaximum>10000</WBMaximum>
                       <Straight>true</Straight>
                    </Pool>
                    <Pool>
                       <PoolId>EX</PoolId>
                       <PoolNumber>4</PoolNumber>
                       <PoolName>Exacta</PoolName>
                       <PoolRaces>1</PoolRaces>
                       <Legs>2</Legs>
                       <Quick>true</Quick>
                       <Wheel>true</Wheel>
                       <Box>true</Box>
                       <PowerBox>true</PowerBox>
                       <KeyWheel>true</KeyWheel>
                       <SingleBetMinimum>2</SingleBetMinimum>
                       <MultipleBetMinimum>1</MultipleBetMinimum>
                       <WagerMinimum>2</WagerMinimum>
                       <Maximum>10000</Maximum>
                       <WBMaximum>10000</WBMaximum>
                       <Straight>true</Straight>
                    </Pool>
</Race>
           </Races>
           <EventId>XVD</EventId>
           <RunId>2613</RunId>
           <EventName>Vaal</EventName>
           <TrackId>XV</TrackId>
           <TrackName>Vaal</TrackName>
           <EventTime>2015-04-02T16:30:00</EventTime>
           <EventInfo>2 Apr 15</EventInfo>
           <EventType>Current</EventType>
           <TrackType>Thoroughbred</TrackType>
           <CurrencyId>USD</CurrencyId>
           <EventStatus>Open</EventStatus>
           <RaceList>1-8</RaceList>
           <BreakTo>0.1</BreakTo>
        </EventDetail>
     </EventsResponse>
  </GetEventDetailResponse>

2613
TH1
TSG
第1次
赢
1.
赢
1.
1.
真的
真的
2.
2.
2.
10000
真的
10000
真的
可编程逻辑控制器
2.
放置
1.
1.
真的
真的
2.
2.
2.
10000
10000
真的
前任
4.
精确的
1.
2.
真的
真的
真的
真的
真的
2.
1.
2.
10000
10000
真的
XVD
2613
瓦尔
十五
瓦尔
2015-04-02T16:30:00
4月2日15
现在的
纯种
美元
打开
1-8
0.1


这比在脚本级别编写解析例程要有效得多。

您必须指定名称空间,如下所示:

;with xmlnamespaces(
    'http://schemas.xmlsoap.org/soap/envelope/' as s,
    default 'http://schema.unitedtote.com/ToteLink/2008/06/Program'
)
select
    T.c.value('Legs[1]', 'varchar(100)') as Legs
from @xml.nodes('s:Envelope/s:Body/GetEventDetailResponse/EventsResponse/EventDetail/Races/Race/Pools/Pool') as T(c)