Bạn có thể làm điều này với 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;
nhưng extractvalue
không được dùng nữa
; vì vậy bạn nên sử dụng 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;
Dù bằng cách nào, bạn cũng cần cung cấp xà phòng soap
không gian tên.
Bạn cũng có thể sử dụng XMLTable nếu bạn đang trích xuất nhiều bit dữ liệu; ở đây nó không thêm nhiều nhưng nó sẽ giống như:
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 '.');