oracle-XML解析XMLDOM对象转字符类型&&PLJSON解析所有模型名称

本文介绍了在Oracle中使用XMLDOM解析XML数据时遇到的问题,特别是当XML长度超过4000字符时如何处理。分享了解决XMLDOM对象转回CLOB或VARCHAR2的方法,并提供了一个名为p_xmlparse_split_data_line的存储过程示例。同时,文章也讨论了使用PLJSON库解析JSON时,如何遍历未知数量的模型名称。
摘要由CSDN通过智能技术生成

这两天有个小需要,摆弄一下oracle-XMLDOM,发现一个极其恶心的问题,就是CLOB varchar2能转XML,但是反过来不行,硬是在BAIDU里找,唯一有问的一贴好多年前的事了,没有回复,其余的全是垃圾,我找到用法了,给大家共享一下。

问题是这样的XML长度超过4000,假设源xml数据是分页的数据结果,想把长度超过4000的XMLDOM对象简单快捷的解析出来,就必须一行/一列分开解析,可是通过getelementsbyname获取到nodelist以后,每个node里面又有很多xml节点,如果一层一层扒洋葱一般的扒,程序写起来太累,而且很难DEBUG也无法支撑下次使用,分层扒开以后,domnode对象怎么再一次转成XML新生成一次XMLDOM再来getelementsbyname。。。

整个存过贴上来,注意其中WRITETOCLOB部分


CREATE OR REPLACE PROCEDURE p_xmlparse_split_data_line(p_xml IN clob,V_TNAME IN VARCHAR2)
AUTHID CURRENT_USER IS
/**
CREATED BY:LISW
CREATE DATE:20180409
DESCRIPTION:RESOLVE XML RESULT DATA INTO ORACLE DATA TABLE , AND INSERT INTO DATAS
**/
  -- xml解析器
  xmlpar xmlparser.parser := xmlparser.newparser;
  -- dom文档对象
  DOC  XMLDOM.domdocument;
  DOC_LINE  XMLDOM.domdocument;
  --根节点
  ROOT_NODE XMLDOM.domnodelist;
  --数据行
  LIST_NODES XMLDOM.domnodelist;
  --数据列
  HASH_MAP_NODES XMLDOM.domnodelist;
  --单元格
  STRING_NODES XMLDOM.domnodelist;
  --子节点
  CHILD_NODES XMLDOM.domnodelist;
  LIST_CHILD_NODES XMLDOM.domnodelist;
  temp_node XMLDOM.domnode;

  --分页大小
  N_RP NUMBER :=10;
  --CUR PAGE
  N_PAGE NUMBER ;
  --TOTAL DATAS
  N_TOTAL NUMBER;
  N_C NUMBER;

  V_TEMP VARCHAR2(1200);

  V_COMMENTS VARCHAR2(4000);

  V_INSERT_SQL VARCHAR2(4000);

  V_SQL VARCHAR2(4000);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值