Web services 尝试调用soap web服务时获取逗号分隔的值

Web services 尝试调用soap web服务时获取逗号分隔的值,web-services,soap,plsql,oracle-apex,Web Services,Soap,Plsql,Oracle Apex,我试图在包中调用soap web服务,其响应是这样的 <tns:abcdef> <ns2:name>anji</ns2:name> </tns:abcdef> <tns:abcdef> <ns2:name>Reddy</ns2:name> </tns:abcdef> 我将节点的结果存储在一个变量中,并将其存储为anjireddy 但是我需要an

我试图在包中调用soap web服务,其响应是这样的

    <tns:abcdef>
      <ns2:name>anji</ns2:name>
    </tns:abcdef>
    <tns:abcdef>
      <ns2:name>Reddy</ns2:name>
    </tns:abcdef>

我将节点的结果存储在一个变量中,并将其存储为anjireddy


但是我需要anji,reddy这样的响应,我怎样才能实现呢?

您正在调用的函数似乎只支持XPath 1.0或其子集;它不喜欢字符串连接,甚至不喜欢简单的FLWOR表达式

如果没有人知道APEX提出了sensibel解决方案,您可以通过手动解析XML来解决,而不是调用parse_XML:

我对名称空间一直很懒散和随意,但您可以包含适当的名称空间子句,使其更加正确和健壮

作为匿名块中的演示:

set serveroutput on
declare
  sur_name varchar2(230);
  l_xml xmltype := xmltype('<root xmlns:tns="abcdef.com/abv/svg/xsd/v1/surlis" xmlns:ns2="abcdef.com/abv/svg/xsd/v1/surlist">
    <tns:abcdef>
      <ns2:name>anji</ns2:name>
    </tns:abcdef>
    <tns:abcdef>
      <ns2:name>Reddy</ns2:name>
    </tns:abcdef>
</root>');
begin
  select xmlquery('string-join(//*:name/text(), ",")'
    passing l_xml returning content).getstringval()
  into sur_name
  from dual;
  dbms_output.put_line(sur_name);
end;
/

anji,Reddy


PL/SQL procedure successfully completed.

我将节点的结果存储在一个变量中-您现在是如何做到的?请编辑您的问题以显示您当前的代码,并可能进行更多解释?sur_name:=apex_web_service.parse_xml p_xml=>l_xml,p_xpath=>'//name/text',p_ns=>'xmlns=';我就是这样做的,只是将特定节点给出的响应存储在一个变量中。我不能在这里使用select语句,我只需要从web服务获取响应,这样它就可以用逗号分隔数据。
set serveroutput on
declare
  sur_name varchar2(230);
  l_xml xmltype := xmltype('<root xmlns:tns="abcdef.com/abv/svg/xsd/v1/surlis" xmlns:ns2="abcdef.com/abv/svg/xsd/v1/surlist">
    <tns:abcdef>
      <ns2:name>anji</ns2:name>
    </tns:abcdef>
    <tns:abcdef>
      <ns2:name>Reddy</ns2:name>
    </tns:abcdef>
</root>');
begin
  select xmlquery('string-join(//*:name/text(), ",")'
    passing l_xml returning content).getstringval()
  into sur_name
  from dual;
  dbms_output.put_line(sur_name);
end;
/

anji,Reddy


PL/SQL procedure successfully completed.