2011-01-19 3 views
1

SAS 9.2를 사용 중이며 .NET 웹 서비스에서 긴 값 배열을 검색하려고합니다. 내가 SAS하지 않고 수동으로 호출 할 때SAS 9.2를 사용하여 웹 서비스에서 값 배열 검색

filename websvc url 'http://path.to/my/webservice?WSDL'; 
libname websvc xml92 xmltype=WSDL; 

Data d; 
    dataSchema = "blah"; 
    module = "blah"; 
run; 

data strata; 
    SET websvc.GetStrataForModuleResponse(parms=d); 
run; 

WebService에이 같은 XML을 반환 : 나는 위의 코드 조각에서의 xmlns 물건을 냈다

<?xml version="1.0" encoding="utf-8"?> 
<ArrayOfLong> 
    <long>1</long> 
</ArrayOfLong> 

참고 여기 내 설정 및 전화입니다.

SAS에서 웹 서비스를 호출 할 때 변수 1 개와 관찰 1 개가있는 데이터 세트를 얻습니다. 변수의 이름은 "datatype = string"이고 값은 비어 있습니다. 매개 변수를 사용하면 위에서 보았던 것과 정확히 일치해야합니다.

내가 변수가 긴 이름과 관찰의 값이 1

이다 1 개 변수 1 명 관찰과 데이터 집합을 보여야하는데

내가 여기에 놓친 거지 뭔가가 있나요?

미리 감사드립니다.

답변

1

SAS libname 엔진은 구조가 매우 제한되어 있습니다. XML이 필요한 구조를 따르지 않으면 SAS에 XML 파일을 읽는 방법을 알리기 위해 XML을 만들어야합니다. 가장 쉬운 방법은 SAS XML Mapper를 사용하는 것입니다. 당신이 현재 서비스를 위해 XML 맵은 다음과 같이 될 것이다 : 당신의 SAS 코드에서

<?xml version="1.0" encoding="UTF-8"?> 
<SXLEMAP xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="webservice" version="1.2" xsi:noNamespaceSchemaLocation="http://www.sas.com/xml/schema/sxle12.xsd"> 
    <TABLE name="ArrayOfLong"> 
     <TABLE-PATH syntax="XPath">/ArrayOfLong</TABLE-PATH> 
     <COLUMN name="long"> 
      <PATH syntax="XPath">/ArrayOfLong/long</PATH> 
      <TYPE>numeric</TYPE> 
      <DATATYPE>integer</DATATYPE> 
     </COLUMN> 
    </TABLE> 
</SXLEMAP> 

당신은지도에 파일 이름 문을 추가하고 LIBNAME 문에지도를 추가해야합니다.

filename wdslmap 'webservice.map'; 
libname websvc xml92 xmltype=WSDL xmlmap=wdslmap; 
+0

감사합니다. Laurent에게 감사드립니다. –

+0

SAS 9.2에서 xmlmap = with xmltype = WSDL을 사용할 수 없습니다. "요청한 옵션이 잘못되었거나 요청한 xmltype에서 지원할 수 없습니다." :(생각은? –

+0

좋아, 그걸 기대하지 않았지만 문서화되어있다. libname을 할당 한 후에 proc 데이터 세트의 결과는 무엇입니까? (proc datasets library = websvc details; run;) –