无法使用 XMLQuery 从 SOAP Web 服务响应中获取值

哈尼萨米人

我正在使用 Oracle 的 XMLQuery 数据库函数来读取 SOAP Webservice 响应,但是响应元素“result”包含命名空间子句 (xmlns="http://xmlns.oracle.com/apps/hcm/processFlows/core/flowActionsService/types /") 元素名称旁边,因此 XMLQuery 无法读取元素的值。

这是我收到的 Webservice 响应正文,我正在尝试读取“结果”

<env:Body>
        <ns0:getFlowTaskInstanceStatusResponse xmlns:ns0="http://xmlns.oracle.com/apps/hcm/processFlows/core/flowActionsService/types/">
        <result xmlns="http://xmlns.oracle.com/apps/hcm/processFlows/core/flowActionsService/types/">COMPLETED</result>
        </ns0:getFlowTaskInstanceStatusResponse>
</env:Body>

.
The following Select statement returns NULL


SELECT xmlcast(XMLQuery('//result' PASSING l_xmldata RETURNING CONTENT) as varchar2(900))
  into l_extract
  from dual;

XMLQuery 函数将返回“COMPLETED”,以防我从 XML 响应中删除命名空间文本!!!然而,这不是一个实际的解决方法。

BR汉尼

老程序员

您有两个选择(我添加了一个“env”命名空间以使 xml 有效):

在查询中包含命名空间:

WITH test AS
  (SELECT xmltype(' 
<env:Body xmlns:env="myenv">        
<ns0:getFlowTaskInstanceStatusResponse xmlns:ns0="http://xmlns.oracle.com/apps/hcm/processFlows/core/flowActionsService/types/">        
<result xmlns="http://xmlns.oracle.com/apps/hcm/processFlows/core/flowActionsService/types/">COMPLETED</result>        
</ns0:getFlowTaskInstanceStatusResponse>
</env:Body>') AS data
  FROM dual
  )
SELECT CAST( extractValue(test.data, '//ns0:result','xmlns:env="myenv" xmlns:ns0="http://xmlns.oracle.com/apps/hcm/processFlows/core/flowActionsService/types/') AS VARCHAR2(900) )
FROM test

忽略命名空间

WITH test AS
  (SELECT xmltype(' 
<env:Body xmlns:env="myenv">        
<ns0:getFlowTaskInstanceStatusResponse xmlns:ns0="http://xmlns.oracle.com/apps/hcm/processFlows/core/flowActionsService/types/">        
<result xmlns="http://xmlns.oracle.com/apps/hcm/processFlows/core/flowActionsService/types/">COMPLETED</result>        
</ns0:getFlowTaskInstanceStatusResponse>
</env:Body>') AS data
  FROM dual
  )
SELECT CAST( extractValue(test.data, '//*[local-name() = "result"]') AS VARCHAR2(900) )
FROM test

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Swift中使用Web服务中的NSXMLParser解析SOAP响应

来自分类Dev

使用xpath从动态SOAP响应中获取值

来自分类Dev

在Soap Web服务响应中获取Json数据

来自分类Dev

在SOAP Web服务中获取请求和响应XML

来自分类Dev

无法使用C#从Soap响应获取值

来自分类Dev

从Java调用外部Web服务后无法获得SOAP响应

来自分类Dev

PHP:SOAP Web服务无法正常工作

来自分类Dev

Oracle中的XMLQuery

来自分类Dev

使用https使用基于SOAP的Web服务

来自分类Dev

使用Swift使用SOAP Web服务

来自分类Dev

使用MVC的Spring Boot SOAP Web服务

来自分类Dev

使用SOAP的iOS Swift Call Web服务

来自分类Dev

使用telnet命令调用SOAP Web服务

来自分类Dev

在Worklight上使用SOAP Web服务

来自分类Dev

使用RabbitMQ的CXF Web服务(SOAP / JMS)

来自分类Dev

在android中使用SOAP本地Web服务

来自分类Dev

使用 PowerShell 访问 SOAP Web 服务

来自分类Dev

当在 java 中无法发现 wsdl 时,使用soap web 服务的推荐方法是什么?

来自分类Dev

使用连接:在Web服务器SOAP请求中关闭

来自分类Dev

iOS中的SOAP Web服务

来自分类Dev

SOAP服务响应无法映射

来自分类Dev

从Web服务SOAP响应填充下拉列表

来自分类Dev

SAS Web服务:对SOAP请求的错误响应

来自分类Dev

Soap Web服务未给出响应

来自分类Dev

使用WSDL URL作为Web服务使用ASP.NET进行SOAP请求和响应?

来自分类Dev

从soap xml响应获取值

来自分类Dev

如何使用使用.xsd模式作为参数的SOAP Web服务?

来自分类Dev

cfcomponent Web服务-获取SOAP属性

来自分类Dev

使用HttpModule拦截SOAP Web服务调用并进行REST API调用以传递响应