使用 SAS 9.2 从 Web 服务检索值数组
我正在使用 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 的情况下手动调用 Web 服务时,它会返回这样的 XML:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfLong>
<long>1</long>
</ArrayOfLong>
注意我从上面的代码片段中截取了 xmlns 内容。
当我从 SAS 调用 Web 服务时,我得到一个包含 1 个变量和 1 个观察值的数据集。变量的名称为“datatype=string”,值为空。有了参数,我应该准确地返回我在上面看到的内容。
我希望看到一个包含 1 个变量和 1 个观察值的数据集,其中变量被命名为 long,观察值是 1。
我在这里缺少什么吗?
提前致谢!
I'm using SAS 9.2 and trying to retrieve an array of long values from a .NET web service. Here is my setup and call:
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;
The webservice returns XML like this when I invoke it manually without SAS:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfLong>
<long>1</long>
</ArrayOfLong>
note I snipped the xmlns stuff from the above snippet.
When I call the web service from SAS I get a dataset with 1 variable and 1 observation. The name of the variable is "datatype=string" and the value is blank. With the parameters I should get back exactly what I see above.
I would expect to see a dataset with 1 variable and 1 observation where the variable is named long and the value of the observation is 1.
Is there something I am missing here?
Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
SAS libname 引擎在结构要求方面受到很大限制。如果您的 XML 不符合所需的结构,您需要创建一个 XML 来告诉 SAS 如何读取 XML 文件。最简单的方法是使用 SAS XML 映射器。对于您当前的服务,XML 映射将如下所示:
在 SAS 代码中,您应该将文件名语句添加到映射中,并将映射添加到 libname 语句中。
The SAS libname engine is very restricted in the structure is requires. If your XML is not conform the required structure you need to create an XML to tell SAS how to read the XML file. The easiest way to do this is by using the SAS XML Mapper. For you current service the XML map would be like this:
In your SAS code you should add a filename statement to your map and add the map to your libname statement.