我有一个带有 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 对象。
- 一个 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!
从这里开始,将这个查询的结果放入一个变量中应该是一个简单的修改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)