PLSQL解析XML

---PLSQL解析XML-
--实例1
declare
       v_xml xmltype;
        cursor c_parse(v_xml xmltype) is
       select trim(extractValue(value(a),'Corporation/Name')) cor_name,
       trim(extractValue(value(a),'Corporation/Name/Addr')) cor_addr
       from table(xmlsequence(extract(v_xml,'Root/Corporation'))) a;
begin
       select xmltype('<?xml version="1.0" encoding="GBK"?>'
       || '<Root>'
       || '   <Corporation>'
       || '     <Name> suqiang </Name>'
       || '     <Addr>No.628 Zhangyang Road</Addr>'
       || '    </Corporation>'
       || '</Root>')
       into v_xml
       from dual;
       for v_cor in c_parse(v_xml) loop
         dbms_output.put_line('Corporation name:' || v_cor.cor_name || ';');
         dbms_output.put_line('Corporation Addr:' || v_cor.cor_addr || ';');
        end loop;
end;
       
------实例2
declare
        v_xml xmltype;
        cursor c_parse(v_xml xmltype) is
        select trim(extractValue(value(a),'Corporation/Name')) cor_name,
        extract(value(a),'Corporation/Persons/Person') cor_person
        from table(xmlsequence(extract(v_xml,'Root/Corporation'))) a;
        cursor c_person(v_persons xmltype) is
        select trim(extractValue(value(a),'Person/Name')) realname,
        trim(extractValue(value(a),'Person/Tel')) tel
        from table(xmlsequence(extract(v_persons,'Person'))) a;
begin
  select xmltype('<?xml version="1.0" encoding="GBK"?>'
    || '<Root>'
    || '   <Corporation>'
    || '      <Name>suqiang</Name>'
    || '      <Persons>'
    || '        <Person id="zhangsan">'
    || '          <Name>张三</Name>'
    || '           <Tel>12345</Tel>'
    || '        </Person>'
    || '        <Person id="lisi">'
    || '          <Name>李四</Name>'
    || '           <Tel>23456</Tel>'
    || '        </Person>'
    || '      </Persons>'
    || '   </Corporation>'
    || '</Root>')
    into v_xml
    from dual;
    for v_cor in c_parse(v_xml) loop
      dbms_output.put_line('Corporation name:' || v_cor.cor_name || ';');
      for v_person in c_person(v_cor.cor_person) loop
        dbms_output.put(v_person.realname || ':');
        dbms_output

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值