Web services 使用SAS 9.2从web服务检索值数组

Web services 使用SAS 9.2从web服务检索值数组,web-services,sas,Web Services,Sas,我正在使用SAS 9.2,并试图从.NET web服务检索一个长值数组。这是我的设置和呼叫: 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.GetStrataForModuleResp

我正在使用SAS 9.2,并试图从.NET web服务检索一个长值数组。这是我的设置和呼叫:

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;
当我在没有SAS的情况下手动调用它时,webservice返回如下XML:

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

1.
注意,我从上面的代码片段中截取了xmlns内容

当我从SAS调用web服务时,我得到一个数据集,其中包含1个变量和1个观察值。变量名为“datatype=string”,值为空。有了这些参数,我就可以得到上面所看到的

我希望看到一个包含1个变量和1个观测值的数据集,其中变量名为long,观测值为1

这里有我遗漏的东西吗


提前谢谢

SAS libname引擎在所需的结构中受到很大限制。如果您的XML不符合所需的结构,则需要创建一个XML来告诉SAS如何读取XML文件。最简单的方法是使用SAS XML映射器。对于您当前的服务,XML映射如下所示:

<?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>

SAS libname引擎在所需的结构中受到很大限制。如果您的XML不符合所需的结构,则需要创建一个XML来告诉SAS如何读取XML文件。最简单的方法是使用SAS XML映射器。对于您当前的服务,XML映射如下所示:

<?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>

谢谢Laurent,我会试试看!只是尝试了一下,在SAS 9.2中,我似乎无法将xmlmap=与xmltype=WSDL一起使用。“请求的选项无效或不支持请求的xmltype”。:(有什么想法吗?好的,我没想到会这样,但是已经有文档记录了。在分配libname之后,proc数据集的结果是什么?(proc datasets library=webvc details;run;)谢谢Laurent,我会尝试一下!只是尝试了一下,在SAS 9.2中,我似乎无法将xmlmap=与xmltype=WSDL一起使用。“请求的选项无效或不支持请求的xmltype”。(有什么想法吗?好的,没有预料到,但它已被记录在案。分配libname后,proc数据集的结果是什么?(proc数据集库=websvc详细信息;运行;)