Anda bisa lakukan ini dengan extractvalue
:
select extractvalue(
xmltype(response_string),
'/soap:Envelope/soap:Body/getAddressForIpResponse/p-address',
'xmlns="urn:USR1" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"')
from dual;
tapi extractvalue
apakah tidak digunakan lagi
; jadi Anda harus menggunakan XMLQuery
:
select XMLQuery(
'declare default element namespace "urn:USR1";
declare namespace soap="http://schemas.xmlsoap.org/soap/envelope/";
/soap:Envelope/soap:Body/getAddressForIpResponse/p-address/text()'
passing xmltype(response_string)
returning content).getStringval()
from dual;
Bagaimanapun Anda harus menyediakan default dan soap
ruang nama.
Anda juga bisa menggunakan XMLTable jika Anda mengekstrak beberapa bit data; di sini tidak banyak tetapi akan menjadi seperti:
select ip_address
from XMLTable (
XMLNamespaces (
default 'urn:USR1',
'http://schemas.xmlsoap.org/soap/envelope/' as "soap"
),
'/soap:Envelope/soap:Body/getAddressForIpResponse/p-address'
passing xmltype(response_string)
columns ip_address varchar2(15) path '.');