Я звоню в веб-сервис, который возвращает мне xml. При попытке получить информацию из указанного ответа, используя предложение, которое включено ниже, данные не обнаруживаются, то есть предложение не возвращает никакой информации. Возможно, в моем предложении есть что-то неправильное, но я не могу найти проблему.
У нас есть следующее предложение:
SELECT T.MYCODE
FROM XMLTABLE(XMLNAMESPACES( DEFAULT 'http://tempuri.org/',
'http://schemas.xmlsoap.org/soap/envelope/' AS "SOAP-ENV",
'http://schemas.xmlsoap.org/soap/encoding/' AS "SOAP-ENC",
'http://www.w3.org/2001/XMLSchema' AS "xsd",
'http://www.w3.org/2001/XMLSchema-instance' AS "xsi",
'http://scxgxtt.phx-dc.dhl.com/euExpressRateBook/RateMsgResponse' AS "rateresp"),
'/SOAP-ENV:Envelope/SOAP-ENV:Body/rateresp:RateResponse/Provider'
PASSING xmltype('<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<rateresp:RateResponse xmlns:rateresp="http://scxgxtt.phx-dc.dhl.com/euExpressRateBook/RateMsgResponse">
<Provider code="DHL">
<Notification code="0">
<Message></Message>
</Notification>
<Service type="N">
<TotalNet>
<Currency>EUR</Currency>
<Amount>7.34</Amount>
</TotalNet>
<Charges>
<Currency>EUR</Currency>
<Charge>
<ChargeType>EXPRESS DOMESTIC</ChargeType>
<ChargeAmount>6.46</ChargeAmount>
</Charge>
<Charge>
<ChargeCode>FF</ChargeCode>
<ChargeType>FUEL SURCHARGE</ChargeType>
<ChargeAmount>0.88</ChargeAmount>
</Charge>
</Charges>
<DeliveryTime>2020-01-22T23:59:00</DeliveryTime>
<CutoffTime>2020-01-21T16:00:00</CutoffTime>
<NextBusinessDayInd>N</NextBusinessDayInd>
</Service>
</Provider>
</rateresp:RateResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>')
COLUMNS MYCODE VARCHAR2(20) PATH '@code') t;
Я ожидал, что вернется строка «DHL», но это ничего не возвращает. Что я делаю неправильно? Спасибо.