Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle 12c XML nhận giá trị từ phản hồi

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.

db <> fiddle

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 '.');

db <> fiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn được phân tách bằng dấu phẩy cho nhiều tham số trong PLSQL

  2. tăng chiều rộng trang trong trình tạo báo cáo tiên tri

  3. Tại sao có độ dài tối đa cho tên thủ tục được lưu trữ?

  4. Vấn đề kiểm tra Django bằng cách sử dụng cơ sở dữ liệu Oracle

  5. Ghi nhật ký đầu ra của chương trình bên ngoài với (wx) python