Вы можете использовать функцию EXTRACTVALUE
для получения этого значения.Эта функция принимает два или три параметра:
- объект XMLTYPE, который содержит документ XML.
- выражение XPath, которое определяет, где в XML значение, которое мы хотим получить.
- (необязательно) дополнительная строка, которая связывает префиксы пространства имен с URI.
В приведенном ниже запросе я взял представленный выше XML-код в виде строки и создал из нее объект XMLTYPE.,Затем я использую EXTRACTVALUE
, чтобы получить запрошенное вами значение:
SELECT EXTRACTVALUE(XMLTYPE(
'<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<SOAProxyResponse xmlns="http://tempuri.org/">
<SOAProxyResult>
There is 23142 Files!
</SOAProxyResult>
</SOAProxyResponse>
</s:Body>
</s:Envelope>'), '//SOAProxyResult', 'xmlns="http://tempuri.org/"') AS result
FROM dual;
Выражение XPath //SOAProxyResult
просто возвращает все элементы SOAProxyResult
в документе.Третий аргумент EXTRACTVALUE
связывает пространство имен по умолчанию с http://tempuri.org/
.Это необходимо, потому что элемент SOAProxyResult
в вашем XML-документе находится в этом пространстве имен.
Если я выполню этот запрос, я получу следующий вывод:
RESULT
--------------------------------------------------------------------------------
There is 23142 Files!
Отсюда он долженнадеюсь, это будет тривиальная модификация для помещения результата этого запроса в переменную.