sql >> Databasteknik >  >> RDS >> Oracle

Oracle 12c XML får värde från svar

Du kan gör detta med 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;

men extractvalue är fasad ; så du bör använda 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;

Oavsett vilket måste du ange standard och soap namnutrymmen.

db<>fiol

Du kan också använda XMLTable om du extraherar flera databitar; här tillför det inte mycket men det skulle vara något i stil med:

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<>fiol




  1. Hur kan PL/SQL-grammatiken som ingår i ANTLR4 testas?

  2. Förhindrar Knex.js sql-injektion?

  3. Finns det en motsvarighet till SQL Servers @@-fel i MySQL

  4. Kontrollera om det finns ett värde i Postgres-arrayen