我有一个带有XML代码的字符串,我想在PL/SQL中从中提取一个值作为变量。
XML非常简单,没有什么不同:
<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
在上面的示例中,如何将值“有23142个文件!”转换为变量?
最佳答案
您可以使用 EXTRACTVALUE
函数获取此值。此函数采用两个或三个参数:
在下面的查询中,我将您在上面介绍的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
的第三个参数将默认 namespace 绑定(bind)到http://tempuri.org/
。这是必需的,因为XML文档中的SOAProxyResult
元素在此 namespace 内。如果运行此查询,则会得到以下输出:
结果
-------------------------------------------------- ------------------------------
有23142个文件!
从这里开始,希望将这个查询的结果放入一个变量中进行微不足道的修改。
关于xml - PLSQL是否从XML读取值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5016399/