Получение массива значений из веб-службы с помощью SAS 9.2 - PullRequest
1 голос
/ 19 января 2011

Я использую SAS 9.2 и пытаюсь получить массив длинных значений из веб-службы .NET. Вот мои настройки и звоните:

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;

Веб-служба возвращает XML следующим образом, когда я вызываю его вручную без SAS:

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

примечание. Я взял фрагмент xmlns из приведенного выше фрагмента .

Когда я вызываю веб-сервис из SAS, я получаю набор данных с 1 переменной и 1 наблюдением. Имя переменной «datatype = string», а значение пустое. С параметрами я должен получить именно то, что вижу выше.

Я бы ожидал увидеть набор данных с 1 переменной и 1 наблюдением, где переменная названа long, а значение наблюдения равно 1.

Есть что-то, чего мне здесь не хватает?

Заранее спасибо!

1 Ответ

1 голос
/ 20 января 2011

Механизм имени SAS libname очень ограничен в структуре, что требуется.Если ваш XML не соответствует требуемой структуре, вам нужно создать XML, чтобы сообщить SAS, как читать XML-файл.Самый простой способ сделать это - использовать SAS XML Mapper.Для вашего текущего сервиса карта 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.

filename wdslmap 'webservice.map';
libname websvc xml92 xmltype=WSDL xmlmap=wdslmap;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...