首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从xml结果中仅提取错误消息?

如何从xml结果中仅提取错误消息?
EN

Stack Overflow用户
提问于 2019-12-02 10:17:53
回答 2查看 197关注 0票数 0

如何从标签VertexApplicationExceptionUser login failed.从下面的xml结果中提取值?

在我的包中,我使用‘message’调用来获取从顶点计算出来的税额,有时我收到错误作为api调用的响应,现在我需要将响应存储在表中,但只需要错误消息ex: VertexApplicationException和用户登录失败。从下面的xml响应标记

代码语言:javascript
复制
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <nsf:Fault xmlns:nsf="http://schemas.xmlsoap.org/soap/envelope/">
         <faultcode>nsf:Client</faultcode>
         <faultstring>User login failed.</faultstring>
         <detail>
            <ns:VertexException xmlns:ns="urn:vertexinc:oseries:exception:1:0">
               <ns:exceptionType>VertexApplicationException</ns:exceptionType>
               <ns:rootCause>User login failed.</ns:rootCause>
            </ns:VertexException>
         </detail>`enter code here`
      </nsf:Fault>
   </S:Body>
</S:Envelope>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-03 07:47:25

您可以尝试以下查询:

代码语言:javascript
复制
select a.*  from XMLTABLE (  

  xmlnamespaces( 'http://schemas.xmlsoap.org/soap/envelope/'   as "S",   
                 'http://schemas.xmlsoap.org/soap/envelope/' as "nsf",
                 'urn:vertexinc:oseries:exception:1:0' as "ns"),  
  '  
  /S:Envelope/S:Body/nsf:Fault/detail/ns:VertexException
  '  

  PASSING  

  XMLTYPE(  
  '  
  <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <nsf:Fault xmlns:nsf="http://schemas.xmlsoap.org/soap/envelope/">
         <faultcode>nsf:Client</faultcode>
         <faultstring>User login failed.</faultstring>
         <detail>
            <ns:VertexException xmlns:ns="urn:vertexinc:oseries:exception:1:0">
               <ns:exceptionType>VertexApplicationException</ns:exceptionType>
               <ns:rootCause>User login failed.</ns:rootCause>
            </ns:VertexException>
         </detail>`enter code here`
      </nsf:Fault>
   </S:Body>
</S:Envelope>  
  ')  

  columns  
    ExceptionType varchar2(40) path 'ns:exceptionType'  
  , RootCause varchar2(40) path 'ns:rootCause'  
) AS A  
;  

输出

代码语言:javascript
复制
+----------------------------+--------------------+
| EXCEPTIONTYPE              | ROOTCAUSE          |
+----------------------------+--------------------+
| VertexApplicationException | User login failed. |
+----------------------------+--------------------+
票数 1
EN

Stack Overflow用户

发布于 2019-12-03 06:45:17

这将使您非常接近,但是XML特定的查询也可能完成此工作。

代码语言:javascript
复制
regexp_substr(your_string, '<ns:rootCause>([A-Z]*)(.*)')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59136796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档