Web services 尝试调用soap web服务时获取逗号分隔的值
我试图在包中调用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
<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.