加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PLSQL从XML读取值?

发布时间:2020-12-15 23:55:56 所属栏目:百科 来源:网络整理
导读:我有一个带有 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
我有一个带有 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/.这是必要的,因为XML文档中的SOAProxyResult元素位于此命名空间内.

如果我运行此查询,我会得到以下输出:

RESULT
--------------------------------------------------------------------------------

                    There is 23142 Files!

从这里开始,希望将此查询的结果放入变量中是一项微不足道的修改.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读