0

Web サービス (以下の URL) を呼び出して、XML の結果を SQL Server 内で varchar(8000) として取得し、それを XML に変換しています。これは完全に機能します。この XML 情報を個別の値に解析したいのですが、引き続き null 値を取得します。SQL 2008 サーバーで XML を使用するのはこれが初めての試みなので、非常に些細な項目が欠けていることはわかっています。

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=¤tLocation=&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 and its Suppliers. All " (引用符なし) を返します。

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

1 に答える 1

0

XPathが間違っています-ルートノードはGeocodingResponse(ではなく)であり、途中でGeocodingResult欠落しています。GeocodingResult

このXPathを試してください:

/GeocodingResponse/Results/GeocodingResult/Address/PostalCode

またはこのSQLXQuery:

SELECT 
   @XML.value('(/GeocodingResponse/Results/GeocodingResult/Address/PostalCode) [1]', 
              'varchar(50)') 
于 2010-09-29T04:57:00.880 に答える