Почему вы не можете найти данные в XML, когда у меня есть доказательства их существования? - PullRequest
0 голосов
/ 26 марта 2020

Я звоню в веб-сервис, который возвращает мне 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», но это ничего не возвращает. Что я делаю неправильно? Спасибо.

...