Анализ TSQL XML - PullRequest
       8

Анализ TSQL XML

0 голосов
/ 29 сентября 2010

Я звоню в веб-службу (URL ниже) и получаю результаты XML обратно в SQL Server как varchar (8000), а затем преобразую их в XML.Это работает отлично.Я хочу разобрать эту информацию XML в ее отдельные значения, но продолжаю получать нулевые значения.Это моя первая попытка использования XML на моем сервере SQL 2008, поэтому я знаю, что мне не хватает очень тривиального элемента.

http://dev.virtualearth.net/Services/v1/GeocodeService/GeocodeService.asmx/Geocode?culture=en-us&count=10&query=1%20microsoft%20way,%20redmond,%20wa&landmark=&addressLine=&locality=&postalTown=&adminDistrict=&district=&postalCode=&countryRegion=&mapBounds=&currentLocation=&curLocAccuracy=&entityTypes=&rankBy=

Я беру полученный ответ и сохраняю егов @ XML.

SET @XML = CAST(@Response AS XML)

Затем я пытаюсь извлечь почтовый индекс, чтобы получить свои результаты и получить NULL или неправильный узел.

Возвращает NULL

SELECT @XML.value('(/GeocodingResult/Results/Address/PostalCode) [1]', 'varchar(50)') 

Возвращает «Copyright © 2010 Microsoft и ее поставщики. Все» (без кавычек)

SELECT @XML.value('(/) [1]', 'varchar(50)') 

1 Ответ

0 голосов
/ 29 сентября 2010

Ваш XPath неверен - ваш корневой узел GeocodingResponse (не GeocodingResult), и вы пропускаете GeocodingResult по пути.

Попробуйте этот XPath:

/GeocodingResponse/Results/GeocodingResult/Address/PostalCode

или этот SQL XQuery:

SELECT 
   @XML.value('(/GeocodingResponse/Results/GeocodingResult/Address/PostalCode) [1]', 
              'varchar(50)') 
...