Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 помогите разобрать XML  [new]
Sandist
Member

Откуда:
Сообщений: 401
Здравствуйте, помогите плз разобрать ответ SOAP
+
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <Get_Vehicles_V11Response xmlns="http://transics.org">
         <Get_Vehicles_V11Result Executiontime="1.0070761">
            <Errors/>
            <Warnings/>
            <Vehicles>
               <InterfaceVehicleResult_V11>
                  <VehicleFleetNumber>???TX-Social???</VehicleFleetNumber>
                  <Groups>
                     <TxConnectGroups>
                        <ConnectGroups>
                           <ConnectGroup>
                              <Group>Pojazdy wlasne ADAMPOL</Group>
                              <SubGroup>PRZEMEK</SubGroup>
                           </ConnectGroup>
                           <ConnectGroup>
                              <Group>Pojazdy wlasne ADAMPOL</Group>
                              <SubGroup>ALL</SubGroup>
                           </ConnectGroup>
                           <ConnectGroup>
                              <Group>MAN</Group>
                              <SubGroup>ADAMPOL</SubGroup>
                           </ConnectGroup>
                           <ConnectGroup>
                              <Group>TACHOGRAF</Group>
                              <SubGroup>CYFROWY</SubGroup>
                           </ConnectGroup>
                        </ConnectGroups>
                     </TxConnectGroups>
                     <SocialGroup>
                        <StartDate xsi:nil="true"/>
                        <EndDate xsi:nil="true"/>
                     </SocialGroup>
                  </Groups>
                  <ExtraTruckInfo>
                     <Country>FR</Country>
                     <InDuty xsi:nil="true"/>
                     <OutDuty xsi:nil="true"/>
                     <Category>3</Category>
                     <Make>???TX-Social???</Make>
                     <Statuses>
                        <Company>false</Company>
                        <Rental>false</Rental>
                        <Loan>false</Loan>
                        <Truck>false</Truck>
                        <LightVehicle>false</LightVehicle>
                        <DigitalTacho>false</DigitalTacho>
                        <TractorUnit>false</TractorUnit>
                        <Coach>false</Coach>
                     </Statuses>
                  </ExtraTruckInfo>
                  <VehicleID>1</VehicleID>
                  <VehicleExternalCode>Kordala P.</VehicleExternalCode>
                  <LicensePlate>CORA</LicensePlate>
                  <ShortName/>
                  <Inactive>true</Inactive>
                  <CanBusConnection>true</CanBusConnection>
                  <VehicleProfile>
                     <ProfileName>Profil Adampol</ProfileName>
                     <ProfileDescription>This is the default OBC profile</ProfileDescription>
                     <IsDefaultProfile>true</IsDefaultProfile>
                     <ProfileType>COMMUNICATION_PROFILE</ProfileType>
                     <ProfileId>1</ProfileId>
                  </VehicleProfile>
                  <VehicleTransicsID>1</VehicleTransicsID>
                  <LastTrailerCode/>
                  <Modified>2017-11-27T20:30:55.64</Modified>
                  <CurrentKms>100</CurrentKms>
                  <FuelLevel>29</FuelLevel>
                  <FuelLevelIndex xsi:nil="true"/>
                  <RefrigeratorIndex xsi:nil="true"/>
                  <Position>
                     <Longitude>2.8946333333333336</Longitude>
                     <Latitude>50.869583333333331</Latitude>
                     <AddressInfo/>
                     <DistanceFromCapitol>28.4km NW Od Lille</DistanceFromCapitol>
                     <DistanceFromLargeCity>2.2km N Od Ieper</DistanceFromLargeCity>
                     <DistanceFromSmallCity>0.9km NW Od Sint-Jan</DistanceFromSmallCity>
                     <DistanceFromPointOfInterest/>
                     <CountryCode>B</CountryCode>
                     <Heading>0</Heading>
                     <LocationSource xsi:nil="true"/>
                  </Position>
                  <Speed>0</Speed>
                  <Activity>
                     <ID>130</ID>
                     <Name>Standstill</Name>
                  </Activity>
                  <ActivityCompleted>false</ActivityCompleted>
                  <ObcInfo>
                     <SoftwareBehaviour>2008</SoftwareBehaviour>
                     <SoftwareVersion>2704</SoftwareVersion>
                     <InstructionSetVersion>9112</InstructionSetVersion>
                     <Planningfeatures>
                        <Enable_Trips>true</Enable_Trips>
                        <Enable_Jobs>false</Enable_Jobs>
                        <Enable_Places>true</Enable_Places>
                        <Enable_Products>true</Enable_Products>
                     </Planningfeatures>
                     <UpdateProgress>4</UpdateProgress>
                     <ResponseImage>Zdalna aktualizacja ukonczona</ResponseImage>
                     <IBC>1</IBC>
                     <ModemChannelID/>
                     <DeviceType>TX_MAX</DeviceType>
                  </ObcInfo>
                  <ETAInfo>
                     <PositionDestination>
                        <Longitude>23.50945</Longitude>
                        <Latitude>52.040549999999996</Latitude>
                     </PositionDestination>
                     <PrevETA xsi:nil="true"/>
                     <ETAStatus>ABORTED</ETAStatus>
                     <DistanceETA>0</DistanceETA>
                     <ETA xsi:nil="true"/>
                     <PositionInfoDestination>3.8km W Od Kobylany</PositionInfoDestination>
                  </ETAInfo>
                  <TemperatureInfoList>
                     <TemperatureInfoItem>
                        <Name>Temperature 1</Name>
                        <Value xsi:nil="true"/>
                        <DateLastUpdate xsi:nil="true"/>
                     </TemperatureInfoItem>
                     <TemperatureInfoItem>
                        <Name>Temperature 2</Name>
                        <Value xsi:nil="true"/>
                        <DateLastUpdate xsi:nil="true"/>
                     </TemperatureInfoItem>
                     <TemperatureInfoItem>
                        <Name>Temperature 3</Name>
                        <Value xsi:nil="true"/>
                        <DateLastUpdate xsi:nil="true"/>
                     </TemperatureInfoItem>
                     <TemperatureInfoItem>
                        <Name>Temperature 4</Name>
                        <Value xsi:nil="true"/>
                        <DateLastUpdate xsi:nil="true"/>
                     </TemperatureInfoItem>
                     <TemperatureInfoItem>
                        <Name>Temperature 5</Name>
                        <Value xsi:nil="true"/>
                        <DateLastUpdate xsi:nil="true"/>
                     </TemperatureInfoItem>
                     <TemperatureInfoItem>
                        <Name>Temperature 6</Name>
                        <Value xsi:nil="true"/>
                        <DateLastUpdate xsi:nil="true"/>
                     </TemperatureInfoItem>
                  </TemperatureInfoList>
                  <InfoFieldList>
                     <InfoFieldItem>
                        <Name>Info 1</Name>
                        <Value>01;Pusty</Value>
                        <DateLastUpdate>2015-07-15T13:57:48</DateLastUpdate>
                     </InfoFieldItem>
                     <InfoFieldItem>
                        <Name>Info 2</Name>
                        <Value>02;Dingolfing - Lapy 20</Value>
                        <DateLastUpdate>2015-03-03T08:32:52</DateLastUpdate>
                     </InfoFieldItem>
                     <InfoFieldItem>
                        <Name>Info 3</Name>
                        <Value>03;</Value>
                        <DateLastUpdate>2015-03-06T15:55:46</DateLastUpdate>
                     </InfoFieldItem>
                     <InfoFieldItem>
                        <Name>Info 4</Name>
                        <Value>04;</Value>
                        <DateLastUpdate>2015-03-03T18:44:34</DateLastUpdate>
                     </InfoFieldItem>
                     <InfoFieldItem>
                        <Name>Info 5</Name>
                        <Value/>
                        <DateLastUpdate xsi:nil="true"/>
                     </InfoFieldItem>
                  </InfoFieldList>
                  <UpdateDatesList>
                     <UpdateDatesItem>
                        <Name>Last status</Name>
                        <DateLastUpdate>2016-07-12T08:53:46</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>Codriver</Name>
                        <DateLastUpdate>2017-11-27T20:26:01</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>Driver</Name>
                        <DateLastUpdate>2016-07-12T08:53:46</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>ETA</Name>
                        <DateLastUpdate>2010-07-23T21:31:25</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>Fuellevel</Name>
                        <DateLastUpdate>2016-07-12T08:53:46</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>Maintenance</Name>
                        <DateLastUpdate>2010-06-22T08:43:02</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>Position</Name>
                        <DateLastUpdate>2017-08-11T16:56:44</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>Trailer detected</Name>
                        <DateLastUpdate>2017-08-11T16:56:44</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>GPRS</Name>
                        <DateLastUpdate>2017-11-27T20:25:46</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>FTP</Name>
                        <DateLastUpdate>2016-01-28T17:22:09</DateLastUpdate>
                     </UpdateDatesItem>
                  </UpdateDatesList>
                  <Maintenance>1000</Maintenance>
                  <Remaining>900</Remaining>
                  <GSMNumberDevice>+324928998760</GSMNumberDevice>
                  <HomebaseNumber>+32490009451</HomebaseNumber>
                  <LastAlarmMessage>
                     <AlarmMessageTransicsID>38669511</AlarmMessageTransicsID>
                     <CreationDate>2017-11-27T20:26:01</CreationDate>
                     <Message>Wersja IS zostala zaktualizowana z 0 0 do 3813 9112.</Message>
                     <AlarmMessageType>VERSIONUPDATE</AlarmMessageType>
                  </LastAlarmMessage>
                  <AutoFilter>BIAHT53/BIAJK53</AutoFilter>
                  <CurrentTrip>
                     <TripID>323557/DIN LAP CW10_2/2015-03-03 08:26:00.47</TripID>
                     <DriverDisplay>Dingolfing - Lapy 2015-03-03 00:00:00.0</DriverDisplay>
                     <StartTime>2015-03-03T08:32:00</StartTime>
                     <TripStatus>Started</TripStatus>
                  </CurrentTrip>
                  <FormattedName>CORA</FormattedName>
               </InterfaceVehicleResult_V11>
            </Vehicles>
         </Get_Vehicles_V11Result>
      </Get_Vehicles_V11Response>
   </soap:Body>
</soap:Envelope>


мне отсюда много чего получить надо... помогите разобрать на примере получения
                  <ETAInfo>
                     <PositionDestination>
                        <Longitude>23.50945</Longitude>
                        <Latitude>52.040549999999996</Latitude>
                     </PositionDestination>


sql server 2014
спасибо

Сообщение было отредактировано: 28 ноя 17, 16:46
28 ноя 17, 16:44    [20988902]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
DECLARE @XML  XML = ' <ETAInfo>
                     <PositionDestination>
                        <Longitude>23.50945</Longitude>
                        <Latitude>52.040549999999996</Latitude>
                     </PositionDestination>
                      </ETAInfo>' 

 
SELECT
  Longitude = @XML.value('(ETAInfo/PositionDestination/Longitude)[1]', 'NUMERIC (20,10)')   
, Latitude = @XML.value('(ETAInfo/PositionDestination/Latitude)[1]', 'NUMERIC (20,10)')   
  
  
28 ноя 17, 16:57    [20988934]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
DECLARE @XML  XML = ' <ETAInfo>
                     <PositionDestination>
                        <Longitude>23.50945</Longitude>
                        <Latitude>52.040549999999996</Latitude>
                     </PositionDestination>
                      </ETAInfo>' 

 

SELECT
  Longitude = b.value('(./Longitude)[1]', 'NUMERIC (20,10)')   
, Latitude = b.value('(./Latitude)[1]', 'NUMERIC (20,10)')   
FROM 
  @XML.nodes('ETAInfo/PositionDestination') a(b)  
28 ноя 17, 16:59    [20988941]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Konst_One
Member

Откуда:
Сообщений: 11517
'NUMERIC (20,15)'
28 ноя 17, 16:59    [20988943]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Судя по вопросу, ему нужно из всей портянки SOAP как раз-таки получить
DECLARE @result  XML = ' <ETAInfo>
                     <PositionDestination>
                        <Longitude>23.50945</Longitude>
                        <Latitude>52.040549999999996</Latitude>
                     </PositionDestination>
                      </ETAInfo>'
SELECT @result AS [xml]
28 ноя 17, 17:01    [20988954]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Cammomile, видимо, ТС хочет таки разобрать XML под спойлером, а кусок вытащил для примера.

sandist, скорее всего у вас с неймспейсами трудности.
Вот пример (XML из под спойлера в переменной):

WITH XMLNAMESPACES (DEFAULT 'http://transics.org')  
select  @xml.value('(//ETAInfo/PositionDestination/Longitude)[1]', 'nvarchar(100)') as Longitude 
    ,   @xml.value('(//ETAInfo/PositionDestination/Latitude)[1]', 'nvarchar(100)') as Latitude
28 ноя 17, 17:02    [20988959]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Ну покуда автор не пояснил более конкретно, я предположил, что он путается в .nodes .value или вообще о них не знает.
28 ноя 17, 17:04    [20988962]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Кстати оно разваливается на xsi:nil

надо в неймспейсы вписать

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

или в тушке хтмл их на что-то зареплейсить
28 ноя 17, 17:15    [20988996]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Sandist
Member

Откуда:
Сообщений: 401
Cammomile,

прошу прощения, инет пропал...
я выложил сначала полный запрос(ответ от сервера) соап, потом показал какие данные я пытаюсь получить.. мне нужны координаты
28 ноя 17, 17:17    [20989006]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Sandist
Member

Откуда:
Сообщений: 401
declare @doc = 'вышеуказанная портянка'
,@iDoc int

exec sp_xml_preparedocument @iDoc output, @Doc, '<root xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />'

select Longitude
from OPENXML(@iDoc,'soap:Envelope/soap:Body/Get_Vehicles_V11Result/Vehicles/InterfaceVehicleResult_V11/ETAInfo/PositionDestination')
with
( 
    Longitude [varchar](50) 'Longitude'
)

EXEC sp_xml_removedocument @iDoc
GO


Вот мой запрос, пытаюсь получить, но блин, не могу никак добиться результата
28 ноя 17, 17:19    [20989018]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Портянка внутри. Обрати внимание на неймспейс для нуллов.
+


DECLARE @XML XML = 

 '<Get_Vehicles_V11Response xmlns="http://transics.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
         <Get_Vehicles_V11Result Executiontime="1.0070761">
            <Errors/>
            <Warnings/>
            <Vehicles>
               <InterfaceVehicleResult_V11>
                  <VehicleFleetNumber>???TX-Social???</VehicleFleetNumber>
                  <Groups>
                     <TxConnectGroups>
                        <ConnectGroups>
                           <ConnectGroup>
                              <Group>Pojazdy wlasne ADAMPOL</Group>
                              <SubGroup>PRZEMEK</SubGroup>
                           </ConnectGroup>
                           <ConnectGroup>
                              <Group>Pojazdy wlasne ADAMPOL</Group>
                              <SubGroup>ALL</SubGroup>
                           </ConnectGroup>
                           <ConnectGroup>
                              <Group>MAN</Group>
                              <SubGroup>ADAMPOL</SubGroup>
                           </ConnectGroup>
                           <ConnectGroup>
                              <Group>TACHOGRAF</Group>
                              <SubGroup>CYFROWY</SubGroup>
                           </ConnectGroup>
                        </ConnectGroups>
                     </TxConnectGroups>
                     <SocialGroup>
                        <StartDate xsi:nil="true"/>
                        <EndDate xsi:nil="true"/>
                     </SocialGroup>
                  </Groups>
                  <ExtraTruckInfo>
                     <Country>FR</Country>
                     <InDuty xsi:nil="true"/>
                     <OutDuty xsi:nil="true"/>
                     <Category>3</Category>
                     <Make>???TX-Social???</Make>
                     <Statuses>
                        <Company>false</Company>
                        <Rental>false</Rental>
                        <Loan>false</Loan>
                        <Truck>false</Truck>
                        <LightVehicle>false</LightVehicle>
                        <DigitalTacho>false</DigitalTacho>
                        <TractorUnit>false</TractorUnit>
                        <Coach>false</Coach>
                     </Statuses>
                  </ExtraTruckInfo>
                  <VehicleID>1</VehicleID>
                  <VehicleExternalCode>Kordala P.</VehicleExternalCode>
                  <LicensePlate>CORA</LicensePlate>
                  <ShortName/>
                  <Inactive>true</Inactive>
                  <CanBusConnection>true</CanBusConnection>
                  <VehicleProfile>
                     <ProfileName>Profil Adampol</ProfileName>
                     <ProfileDescription>This is the default OBC profile</ProfileDescription>
                     <IsDefaultProfile>true</IsDefaultProfile>
                     <ProfileType>COMMUNICATION_PROFILE</ProfileType>
                     <ProfileId>1</ProfileId>
                  </VehicleProfile>
                  <VehicleTransicsID>1</VehicleTransicsID>
                  <LastTrailerCode/>
                  <Modified>2017-11-27T20:30:55.64</Modified>
                  <CurrentKms>100</CurrentKms>
                  <FuelLevel>29</FuelLevel>
                  <FuelLevelIndex xsi:nil="true"/>
                  <RefrigeratorIndex xsi:nil="true"/>
                  <Position>
                     <Longitude>2.8946333333333336</Longitude>
                     <Latitude>50.869583333333331</Latitude>
                     <AddressInfo/>
                     <DistanceFromCapitol>28.4km NW Od Lille</DistanceFromCapitol>
                     <DistanceFromLargeCity>2.2km N Od Ieper</DistanceFromLargeCity>
                     <DistanceFromSmallCity>0.9km NW Od Sint-Jan</DistanceFromSmallCity>
                     <DistanceFromPointOfInterest/>
                     <CountryCode>B</CountryCode>
                     <Heading>0</Heading>
                     <LocationSource xsi:nil="true"/>
                  </Position>
                  <Speed>0</Speed>
                  <Activity>
                     <ID>130</ID>
                     <Name>Standstill</Name>
                  </Activity>
                  <ActivityCompleted>false</ActivityCompleted>
                  <ObcInfo>
                     <SoftwareBehaviour>2008</SoftwareBehaviour>
                     <SoftwareVersion>2704</SoftwareVersion>
                     <InstructionSetVersion>9112</InstructionSetVersion>
                     <Planningfeatures>
                        <Enable_Trips>true</Enable_Trips>
                        <Enable_Jobs>false</Enable_Jobs>
                        <Enable_Places>true</Enable_Places>
                        <Enable_Products>true</Enable_Products>
                     </Planningfeatures>
                     <UpdateProgress>4</UpdateProgress>
                     <ResponseImage>Zdalna aktualizacja ukonczona</ResponseImage>
                     <IBC>1</IBC>
                     <ModemChannelID/>
                     <DeviceType>TX_MAX</DeviceType>
                  </ObcInfo>
                  <ETAInfo>
                     <PositionDestination>
                        <Longitude>23.50945</Longitude>
                        <Latitude>52.040549999999996</Latitude>
                     </PositionDestination>
                     <PrevETA xsi:nil="true"/>
                     <ETAStatus>ABORTED</ETAStatus>
                     <DistanceETA>0</DistanceETA>
                     <ETA xsi:nil="true"/>
                     <PositionInfoDestination>3.8km W Od Kobylany</PositionInfoDestination>
                  </ETAInfo>
                  <TemperatureInfoList>
                     <TemperatureInfoItem>
                        <Name>Temperature 1</Name>
                        <Value xsi:nil="true"/>
                        <DateLastUpdate xsi:nil="true"/>
                     </TemperatureInfoItem>
                     <TemperatureInfoItem>
                        <Name>Temperature 2</Name>
                        <Value xsi:nil="true"/>
                        <DateLastUpdate xsi:nil="true"/>
                     </TemperatureInfoItem>
                     <TemperatureInfoItem>
                        <Name>Temperature 3</Name>
                        <Value xsi:nil="true"/>
                        <DateLastUpdate xsi:nil="true"/>
                     </TemperatureInfoItem>
                     <TemperatureInfoItem>
                        <Name>Temperature 4</Name>
                        <Value xsi:nil="true"/>
                        <DateLastUpdate xsi:nil="true"/>
                     </TemperatureInfoItem>
                     <TemperatureInfoItem>
                        <Name>Temperature 5</Name>
                        <Value xsi:nil="true"/>
                        <DateLastUpdate xsi:nil="true"/>
                     </TemperatureInfoItem>
                     <TemperatureInfoItem>
                        <Name>Temperature 6</Name>
                        <Value xsi:nil="true"/>
                        <DateLastUpdate xsi:nil="true"/>
                     </TemperatureInfoItem>
                  </TemperatureInfoList>
                  <InfoFieldList>
                     <InfoFieldItem>
                        <Name>Info 1</Name>
                        <Value>01;Pusty</Value>
                        <DateLastUpdate>2015-07-15T13:57:48</DateLastUpdate>
                     </InfoFieldItem>
                     <InfoFieldItem>
                        <Name>Info 2</Name>
                        <Value>02;Dingolfing - Lapy 20</Value>
                        <DateLastUpdate>2015-03-03T08:32:52</DateLastUpdate>
                     </InfoFieldItem>
                     <InfoFieldItem>
                        <Name>Info 3</Name>
                        <Value>03;</Value>
                        <DateLastUpdate>2015-03-06T15:55:46</DateLastUpdate>
                     </InfoFieldItem>
                     <InfoFieldItem>
                        <Name>Info 4</Name>
                        <Value>04;</Value>
                        <DateLastUpdate>2015-03-03T18:44:34</DateLastUpdate>
                     </InfoFieldItem>
                     <InfoFieldItem>
                        <Name>Info 5</Name>
                        <Value/>
                        <DateLastUpdate xsi:nil="true"/>
                     </InfoFieldItem>
                  </InfoFieldList>
                  <UpdateDatesList>
                     <UpdateDatesItem>
                        <Name>Last status</Name>
                        <DateLastUpdate>2016-07-12T08:53:46</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>Codriver</Name>
                        <DateLastUpdate>2017-11-27T20:26:01</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>Driver</Name>
                        <DateLastUpdate>2016-07-12T08:53:46</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>ETA</Name>
                        <DateLastUpdate>2010-07-23T21:31:25</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>Fuellevel</Name>
                        <DateLastUpdate>2016-07-12T08:53:46</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>Maintenance</Name>
                        <DateLastUpdate>2010-06-22T08:43:02</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>Position</Name>
                        <DateLastUpdate>2017-08-11T16:56:44</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>Trailer detected</Name>
                        <DateLastUpdate>2017-08-11T16:56:44</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>GPRS</Name>
                        <DateLastUpdate>2017-11-27T20:25:46</DateLastUpdate>
                     </UpdateDatesItem>
                     <UpdateDatesItem>
                        <Name>FTP</Name>
                        <DateLastUpdate>2016-01-28T17:22:09</DateLastUpdate>
                     </UpdateDatesItem>
                  </UpdateDatesList>
                  <Maintenance>1000</Maintenance>
                  <Remaining>900</Remaining>
                  <GSMNumberDevice>+324928998760</GSMNumberDevice>
                  <HomebaseNumber>+32490009451</HomebaseNumber>
                  <LastAlarmMessage>
                     <AlarmMessageTransicsID>38669511</AlarmMessageTransicsID>
                     <CreationDate>2017-11-27T20:26:01</CreationDate>
                     <Message>Wersja IS zostala zaktualizowana z 0 0 do 3813 9112.</Message>
                     <AlarmMessageType>VERSIONUPDATE</AlarmMessageType>
                  </LastAlarmMessage>
                  <AutoFilter>BIAHT53/BIAJK53</AutoFilter>
                  <CurrentTrip>
                     <TripID>323557/DIN LAP CW10_2/2015-03-03 08:26:00.47</TripID>
                     <DriverDisplay>Dingolfing - Lapy 2015-03-03 00:00:00.0</DriverDisplay>
                     <StartTime>2015-03-03T08:32:00</StartTime>
                     <TripStatus>Started</TripStatus>
                  </CurrentTrip>
                  <FormattedName>CORA</FormattedName>
               </InterfaceVehicleResult_V11>
            </Vehicles>
         </Get_Vehicles_V11Result>
      </Get_Vehicles_V11Response>'
 
;WITH XMLNAMESPACES (DEFAULT 'http://transics.org')

SELECT  
   [Node]= b.query('.')
, Long =  b.value('(./Longitude)[1]', 'NUMERIC (20,15)') 
, Lat  =  b.value('(./Latitude)[1]', 'NUMERIC (20,15)') 
FROM 
  @XML.nodes('Get_Vehicles_V11Response/Get_Vehicles_V11Result/Vehicles/InterfaceVehicleResult_V11/ETAInfo/PositionDestination') a(b) 
28 ноя 17, 17:25    [20989043]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Sandist
Member

Откуда:
Сообщений: 401
Minamoto,
УРА! Сработало!
WITH XMLNAMESPACES (DEFAULT 'http://transics.org')  
select  @xml.value('(//ETAInfo/PositionDestination/Longitude)[1]', 'nvarchar(100)') as Longitude 
    ,   @xml.value('(//ETAInfo/PositionDestination/Latitude)[1]', 'nvarchar(100)') as Latitude


в чем моя ошибка была?
28 ноя 17, 17:26    [20989044]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Sandist
Member

Откуда:
Сообщений: 401
Sandist,
четко! очень помогли, спасибо большое
28 ноя 17, 17:29    [20989056]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Sandist
Minamoto,
УРА! Сработало!
WITH XMLNAMESPACES (DEFAULT 'http://transics.org')  
select  @xml.value('(//ETAInfo/PositionDestination/Longitude)[1]', 'nvarchar(100)') as Longitude 
    ,   @xml.value('(//ETAInfo/PositionDestination/Latitude)[1]', 'nvarchar(100)') as Latitude


в чем моя ошибка была?

Так я же написал - неймспейс забыли. У вас дефалтовый неймспейс прописан (обратите внимание, что не на первом уровне), вот на нем и валитесь. Я его указал, после этого проблем не стало. А вот если вы будете весь путь прописывать, то вам, как минимум, еще неймспейс для soap надо будет прописать.

Дока тут, читайте, чтобы подробнее разобраться: https://docs.microsoft.com/en-us/sql/relational-databases/xml/add-namespaces-to-queries-with-with-xmlnamespaces
28 ноя 17, 17:29    [20989062]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Минамото, а поясни пожалуйста, почему в моем варианте с .nodes('путь к узлу') оно валится, а в твоем с

@xml.value('(//ETAInfo/PositionDestination/Latitude)[1]

всё ровненько?
28 ноя 17, 17:34    [20989082]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Cammomile, в этом варианте?

Cammomile
DECLARE @XML  XML = ' <ETAInfo>
                     <PositionDestination>
                        <Longitude>23.50945</Longitude>
                        <Latitude>52.040549999999996</Latitude>
                     </PositionDestination>
                      </ETAInfo>' 

 

SELECT
  Longitude = b.value('(./Longitude)[1]', 'NUMERIC (20,10)')   
, Latitude = b.value('(./Latitude)[1]', 'NUMERIC (20,10)')   
FROM 
  @XML.nodes('ETAInfo/PositionDestination') a(b)  


Если не указан в начале слэш, то он ищет с текущего узла XML, т.е. в данном случае с корня. Если указан одинарный - то с корня всегда, даже если текущий не корень. А если двойной, то с любого уровня:

;WITH XMLNAMESPACES (DEFAULT 'http://transics.org')

SELECT
  Longitude = b.value('(./Longitude)[1]', 'NUMERIC (20,10)')   
, Latitude = b.value('(./Latitude)[1]', 'NUMERIC (20,10)')   
FROM 
  @XML.nodes('//ETAInfo/PositionDestination') a(b) 
28 ноя 17, 17:41    [20989107]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Sandist
Member

Откуда:
Сообщений: 401
а почему не работает так

exec sp_xml_preparedocument @iDoc output, @Doc, '<root xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />'

;WITH XMLNAMESPACES (DEFAULT 'http://transics.org') 
select *
from OPENXML(@iDoc,'//InterfaceVehicleResult_V11/*',1) a1
1 дек 17, 20:05    [20999511]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5924
Sandist
а почему не работает так

Потому что в OPENXML неймспейсы задаются по-другому.
2 дек 17, 04:03    [21000111]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5924
(они задаются в вызове sp_xml_preparedocument)
2 дек 17, 04:05    [21000112]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Sandist
Member

Откуда:
Сообщений: 401
Сон Веры Павловны,

Просветите меня пожалуйста, несколько дней бьюсь и никак не могу получить результат...
У меня результат состоит из множества одинаковых блоков и мне нужно получить все значения.. я представляю это в виде таблицы. При указании @XML.value мне нужно указывать какое именно значение я получаю [1] или [2]... но я не знаю количества получаемых значений и притом кажется, что это неэффективно с точки зрения оптимизации... Я подумал, что используя OpenXML смогу получить нужные поля и представить их в виде таблицы наиболее эффективно... Но никак не могу получить необходимый результат. Буду очень признателен если кто-нибудь откликнется и напишет пару строк кода, которые покажут как именно это можно реализовать на моем примере. Я прочел документацию и все же не смог разобраться уже миллион разных комбинаций перебрал... помогите пожалуйста
2 дек 17, 17:45    [21000812]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Sandist
Member

Откуда:
Сообщений: 401
Sandist,

Вот мое решение
exec sp_xml_preparedocument @iDoc output, @Doc,  '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tran="http://transics.org"/>'

select distinct VehicleID, VehicleTransicsID, CurrentKms as Odometr, Speed
from OPENXML(@iDoc,'/soap:Envelope/soap:Body/tran:Get_Vehicles_V11Response/tran:Get_Vehicles_V11Result/tran:Vehicles/tran:InterfaceVehicleResult_V11/*',2) 
with ( VehicleID nvarchar(100) '../tran:VehicleID'
      ,VehicleTransicsID nvarchar(100) '../tran:VehicleTransicsID'
      --,Longitude nvarchar(100) '../tran:Longitude'
      --,Latitude nvarchar(100) '../tran:Latitude'
	  ,CurrentKms nvarchar(100) '../tran:CurrentKms'
	  ,Speed nvarchar(100) '../tran:Speed'
	  )


Так же помогла инфа https://social.msdn.microsoft.com/Forums/sqlserver/en-US/89a59302-c1fb-45a5-8c83-6bb159e18ba8/openxml-for-my-xml-does-not-get-the-result?forum=transactsql

Но почему-то данные выводятся с повторениями, каждая строка 24 раза, не понял почему?
2 дек 17, 22:34    [21001383]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1351
Sandist,

та портянка xml что в вашем первом сообщении и ваш текущий запрос дают одну строку.
другую xml что ли пытаетесь обработать?
3 дек 17, 01:22    [21001722]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
Sandist
Member

Откуда:
Сообщений: 401
felix_ff,

ну xml тот же, только теги результатов повторяются для каждого запрошенного id
3 дек 17, 13:27    [21002066]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобрать XML  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
Sandist
felix_ff,

ну xml тот же, только теги результатов повторяются для каждого запрошенного id
Какой ещё "запрошенный id"???
Выполняете запрос с вашим XML, получаете одну строку.
Что неправильного?, приведите описание данных, которые должны возвращаться вашим запросом.
3 дек 17, 19:32    [21002536]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить