XML导入Oracle

create or replace procedure UserInfoEduceXMLFile (outfile varchar2 := 'e:/oracle')
as
    doc xmldom.DOMDocument;--定义doc文档
    main_node xmldom.DOMNode;--定义一个文档节点
    root_node xmldom.DOMNode;--定义根节点
    User_node xmldom.DOMNode;--定义User节点
    item_node xmldom.DOMNode;--定义User下的子节点集合
    root_elmt xmldom.DOMElement;--定义根元素 
    item_elmt xmldom.DOMElement;
    item_text xmldom.DOMText;
   
    -- 定义选择记录的游标
    cursor cur_getUserInfo is select USERID,NICKNAME,USERNAME,
    USERPWD,GENDER,ADDRESS,PHONE,ENROLTIME from userinfo;
begin
       /***********
       1 创建文档
       ***********/
       doc := xmldom.newDOMDocument;-- 创建文档对象
       main_node := xmldom.makeNode(doc);-- 获得文档节点
       root_elmt := xmldom.createElement(doc,'UserInfo');-- 创建根元素
       root_node := xmldom.appendChild(main_node,xmldom.makeNode(root_elmt));-- 向文档节点加入根节点
       /*****************
       2 用循环游标将UserInfo 下的所有子节点添加到User父节点中
       ****************/
       for V_UserInfo  in cur_getUserInfo loop
           -- 创建 User 元素
           item_elmt := xmldom.createElement(doc,'User');
            -- 设置 User 元素的 USERID 属性
            xmldom.setAttribute(item_elmt,'USERID',V_UserInfo.USERID);
            --将User 元素 加如根节点
            User_node := xmldom.appendChild(root_node,xmldom.makeNode(item_elmt));
          
             -- 加入 NICKNAME 节点
             item_elmt := xmldom.createElement(doc,'NICKNAME');
             item_node := xmldom.appendChild(User_node,xmldom.makeNode(item_elmt));
             -- 加入文本节点
             item_text := xmldom.createTextNode(doc,V_UserInfo.NICKNAME);
             item_node := xmldom.appendChild(item_node,xmldom.makeNode(item_text));  
                   
             -- 加入 USERNAME 节点
             item_elmt := xmldom.createElement(doc,'USERNAME');
             item_node := xmldom.appendChild(User_node,xmldom.makeNode(item_elmt));
             item_text := xmldom.createTextNode(doc,V_UserInfo.USERNAME);
             item_node := xmldom.appendChild(item_node,xmldom.makeNode(item_text));
             -- 加入 USERPWD 节点
             item_elmt := xmldom.createElement(doc,'USERPWD');
             item_node := xmldom.appendChild(User_node,xmldom.makeNode(item_elmt));
             item_text := xmldom.createTextNode(doc,V_UserInfo.USERPWD);
             item_node := xmldom.appendChild(item_node,xmldom.makeNode(item_text));
             -- 加入 GENDER 节点
             item_elmt := xmldom.createElement(doc,'GENDER');
             item_node := xmldom.appendChild(User_node,xmldom.makeNode(item_elmt));
             item_text := xmldom.createTextNode(doc,V_UserInfo.GENDER);
             item_node := xmldom.appendChild(item_node,xmldom.makeNode(item_text));
            
             -- 加入 ADDRESS 节点
             item_elmt := xmldom.createElement(doc,'ADDRESS');
             item_node := xmldom.appendChild(User_node,xmldom.makeNode(item_elmt));
             item_text := xmldom.createTextNode(doc,V_UserInfo.ADDRESS);
             item_node := xmldom.appendChild(item_node,xmldom.makeNode(item_text));            
             -- 加入 PHONE 节点
             item_elmt := xmldom.createElement(doc,'PHONE');
             item_node := xmldom.appendChild(User_node,xmldom.makeNode(item_elmt));
             item_text := xmldom.createTextNode(doc,V_UserInfo.PHONE);
             item_node := xmldom.appendChild(item_node,xmldom.makeNode(item_text));            
             -- 加入 ENROLTIME 节点
             item_elmt := xmldom.createElement(doc,'ENROLTIME');
             item_node := xmldom.appendChild(User_node,xmldom.makeNode(item_elmt));
             item_text := xmldom.createTextNode(doc,V_UserInfo.ENROLTIME);
             item_node := xmldom.appendChild(item_node,xmldom.makeNode(item_text));
            
       end loop;
      
       /***********
       3 保存文档、 释放资源
       ***********/
       xmldom.setVersion(doc,'1.0'); 
       xmldom.writeToFile(doc,outfile,'GB2312');--将文档对象保存到外部文件中
       xmldom.freeDocument(doc);--释放资源
end UserInfoEduceXMLFile;

--测试
begin
     UserInfoEduceXMLFile('ZHULIANGPATH'||'/ZhuLiangUserInfo.xml');
end; 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值