H.AL Ответов: 1

Как поймать XML-логический ответ soap webservice от oracle?


Я вызываю веб-сервис SOAP от oracle, который возвращает xml-ответ

Я пытаюсь поймать логическое значение с помощью xmlTable как здесь но мой код возвращает ошибку синтаксического анализа, которую я не могу поймать. Какой-нибудь намек? Ниже приведен мой код:

ФУНКЦИЯ XMLTEST (P_XML VARCHAR2) ВОЗВРАЩАЕТ VARCHAR2 КАК
V_FLAG VARCHAR2(4000);

НАЧАТЬ
Выберите П. логическое
В V_FLAG
Из xmltable ('/boolean'
передача xmltype(P_XML)
столбцы boolean VARCHAR2 (30) Путь ' text ()') P;
ВЕРНУТЬСЯ V_FLAG;
КОНЕЦ XMLTEST;


пожалуйста, проверьте эта ссылка для предварительного просмотра xml-файла

Что я уже пробовал:

Этот код ниже работает нормально и возвращает значение действия "like" для этой структуры

Выберите п. Действие
В V_FLAG
Из xmltable ('/profile/subject / action ' передача xmltype(P_XML)
столбцы тема VARCHAR2(30) Путь ' text()',
действие VARCHAR2(30) Путь ' text()',
объект XMLTYPE путь'') П;

ВЕРНУТЬСЯ V_FLAG;
КОНЕЦ XMLTEST;

1 Ответов

Рейтинг:
2

H.AL

Решено, проблема была с xmlns=".."

ФУНКЦИЯ XMLTEST (P_XML VARCHAR2) ВОЗВРАЩАЕТ VARCHAR2 КАК
V_FLAG VARCHAR2(4000);
V_XML1 VARCHAR2(4000);
V_XML2 VARCHAR2(4000);
V_XML VARCHAR2(4000);
НАЧАТЬ
V_XML1: = SUBSTR(P_XML, 0, INSTR(P_XML,'xmlns') -1)|/ ' >';
V_XML2 := SUBSTR(P_XML, INSTR(P_XML,' / Methods " >')+10);
V_XML := V_XML1| / V_XML2;

Выберите П. логическое
В V_FLAG
Из xmltable ('/boolean ' передача xmltype(V_XML)
столбцы boolean VARCHAR2 (30) Путь ' text ()') P;

ВЕРНУТЬСЯ V_FLAG;

КОНЕЦ XMLTEST;