2017-04-06 112 views
3

我试图解析XML响应,但得到没有给出数据found.Code解析SOAP响应below.Anyone请帮我如何使用PLSQL的Oracle APEX

WITH DATA AS (SELECT '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
 
    <soap:Body> 
 
     <GetDeliveryReportResponse xmlns="MyTest WebService"> 
 
     <GetDeliveryReportResult>919748021520500 -3-4/6/2017 1:18:49 PM,919400159619-3-4/6/2017 1:19:20 PM,||rc_smsSND_NUMB-11-4/6/2017 6:10:00 PM,||rc_smsSND_NUMB-11-4/6/2017 6:11:00 PM</GetDeliveryReportResult> 
 
     </GetDeliveryReportResponse> 
 
    </soap:Body> 
 
</soap:Envelope>' xml FROM dual) 
 

 
SELECT did 
 
    FROM data, 
 
      xmltable(XMLNamespaces ('http://schemas.xmlsoap.org/soap/envelope/' 
 
            AS "soap"), 
 
        '/soap:Envelope/soap:Body/GetDeliveryReportResponse' 
 
        PASSING XMLTYPE(xml) 
 
        COLUMNS 
 
        did Varchar2(1000) PATH 'GetDeliveryReportResult');

回答

0

你只需要将默认声明添加到已写入的代码中。

WITH DATA AS (SELECT '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
     <GetDeliveryReportResponse xmlns="MyTest WebService"> 
     <GetDeliveryReportResult>919748021520500 -3-4/6/2017 1:18:49 PM,919400159619-3-4/6/2017 1:19:20 PM,||rc_smsSND_NUMB-11-4/6/2017 6:10:00 PM,||rc_smsSND_NUMB-11-4/6/2017 6:11:00 PM</GetDeliveryReportResult> 
     </GetDeliveryReportResponse> 
    </soap:Body> 
</soap:Envelope>' xml FROM dual) 

SELECT did 
    FROM data, 
      xmltable(XMLNamespaces (default 'MyTest WebService', 
      'http://schemas.xmlsoap.org/soap/envelope/' 
            AS "soap"), 
        '/soap:Envelope/soap:Body/GetDeliveryReportResponse' 
        PASSING XMLTYPE(xml) 
        COLUMNS 
        did Varchar2(1000) PATH 'GetDeliveryReportResult');