【问题标题】:Extract body of soap response提取肥皂反应的主体
【发布时间】:2017-05-23 00:43:57
【问题描述】:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
  <si xmlns="http://tempuri.org">LOCALE=,USERID=</si>
 </soap:Header>
  <soap:Body>
    <ns2:data xmlns:ns2="http://service/">
       <return>
          <id>10010</id>
          <approvementDate>16.06.2011 - 17:02:08</approvementDate>
          <currentYear>2010</currentYear>
          <resultCode>Success</resultCode>
       </return>
    </ns2:data>
  </soap:Body>
</soap:Envelope>

我需要使用 plsql 提取 xml 的主体节点,下面的代码适用于 Header

     extract('/soap:Envelope/soap:Header/child::node()','xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"'); 

但我无法通过此代码获取正文

     extract('/soap:Envelope/soap:Header/soap:Body/child::node()','xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"');

感谢您的帮助。

【问题讨论】:

    标签: xml oracle soap plsql extract


    【解决方案1】:

    Body 和 Header 都是根节点的直接后代。您正在尝试在 一个 Header 节点下获取 Body 节点。Header 没有这样的子节点,所以你没有得到任何结果。

    路径应该是:

    extract('/soap:Envelope/soap:Body/child::node()','xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"');
    

    作为 PL/SQL 块的一部分(具有组成的表、列和变量名)将得到:

    declare
      l_doc xmltype;
      l_body xmltype;
    begin
      select xml_col into l_doc from your_table;
      l_body := l_doc.extract('/soap:Envelope/soap:Body/child::node()',
        'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"');
      dbms_output.put_line(l_body.getstringval);
    end;
    /
    
    PL/SQL procedure successfully completed.
    
    <ns2:data xmlns:ns2="http://service/">
      <return>
        <id>10010</id>
        <approvementDate>16.06.2011 - 17:02:08</approvementDate>
        <currentYear>2010</currentYear>
        <resultCode>Success</resultCode>
      </return>
    </ns2:data>
    

    【讨论】:

    • 非常感谢,我也试过这种方式,但从一开始就检查结果错误。
    猜你喜欢
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多