次のようなxml形式でクラス(DOVIZ_RETURN)のリストを返すWebサービスとWebメソッドを作成しました。
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfDOVIZ_RETURN xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">
<DOVIZ_RETURN>
<dovizAdi>AMERİKAN DOLARI</dovizAdi>
<dovizKodu>USD</dovizKodu>
<dovizAlis>1.7928</dovizAlis>
<dovizSatis>1.8014</dovizSatis>
</DOVIZ_RETURN>
<DOVIZ_RETURN>
<dovizAdi>KANADA DOLARI</dovizAdi>
<dovizKodu>CAD</dovizKodu>
<dovizAlis>1.8321</dovizAlis>
<dovizSatis>1.8404</dovizSatis>
</DOVIZ_RETURN>
</ArrayOfDOVIZ_RETURN>
そして、ストアドプロシージャを使用してこのサービスを正常に呼び出しています。このxmlを取得しています。しかし、以下のsqlを使用してこのxmlを解析すると、行が返され、列のタイトルが返されます。以下をご覧ください:
ALTER PROCEDURE GET_DOVIZ_KUR_RESULT_FROM_SERVIS
AS
declare @obj int
declare @servisUrl varchar(200)
declare @response xml
SET @servisUrl='http://localhost/DovizKurTestApp/DovizKurService.asmx/GET_DOVIZ_KUR'
EXEC sp_OACreate 'MSXML2.ServerXMLHttp', @obj OUT
EXEC sp_OAMethod @obj,'Open',NULL,'GET',@servisUrl,false
EXEC sp_OAMethod @obj,'send'
EXEC sp_OAGetProperty @obj, 'responseText', @response OUT
create table #DOVIZ_KUR (dovizKurList xml)
insert into #DOVIZ_KUR select @response
SELECT
a.b.value('dovizAdi[1]', 'Varchar(100)') DovizAdi,
a.b.value('dovizKodu[1]', 'Varchar(100)') DovizKodu,
a.b.value('dovizAlis[1]', 'Varchar(100)') DovizAlis,
a.b.value('dovizSatis[1]', 'Varchar(100)') DovizSatis
FROM #DOVIZ_KUR
CROSS APPLY dovizKurList.nodes('/ArrayOfDOVIZ_RETURN/DOVIZ_RETURN') AS a(b)
EXEC sp_OADestroy @obj
RETURN
ここで何が問題になっていますか?