急!!oracle xml处理(节点获取,增加,删除)!感谢各位帮忙!

Billy2017CZ 2014-10-16 09:22:26
有一段xml格式字段串 clob类型
格式如下:
<sxml>
<tab>
<A>1</A>
<B>2</B>
<C/>
<D>3</D>
<E/>
</tab>
<tab1>
<A>2</A>
<B>4</B>
<C/>
<D>33</D>
<E/>
</tab1>
</sxml>
现需实现效果(移除D节点,增加F节点)
<sxml>
<tab>
<A>1</A>
<B>2</B>
<C/>
<E/>
<F>44</F>
</tab>
</sxml>
注:需通过xmldom对象操作,不需要截取字符串处理
...全文
491 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Billy2017CZ 2014-10-16
  • 打赏
  • 举报
回复
该处理 需要先解析 然后再插入,删除元素 目前能获取到tab下的节点元素 以及值信息 procedure p_getXml(sxml in clob) is --创建xml解析器实例xmlparser.Parser xmlPar xmlparser.Parser := xmlparser.newParser; --定义DOM文档 xDoc xmldom.DOMDocument; --定义inxml子节点数目变量 lenInxml integer; --定义节点列表,存放inxml节点们 itemNodes xmldom.DOMNodeList; --定义节点列表,存放inxml子节点们 childNodes xmldom.DOMNodeList; --定义节点,存放单个inxml节点 itemNode xmldom.DOMNode; sname varchar(100); svalue varchar(100); tmp number; begin --解析xmlStr中xml字符串,并存放到xmlPar中 xmlparser.parseClob(xmlPar, sxml); --将xmlPar中的数据转存到dom文档中 xDoc := xmlparser.getDocument(xmlPar); xmlparser.freeParser(xmlPar); --释放解析器实例 --获取所有sxml节点 itemNodes := xmldom.getElementsByTagName(xDoc, 'tab'); --获取sxml节点的个数 lenInxml := xmldom.getLength(itemNodes); --遍历所有的sxml节点 for i in 0 .. lenInxml - 1 loop begin --获取节点列表中的第i个sxml节点 itemNode := xmldom.item(itemNodes, i); --获取第i个inxml节点的所有子节点 childNodes := xmldom.getChildNodes(itemNode); tmp := xmldom.GETLENGTH(childNodes); for j in 0 .. tmp - 1 loop --获取所有子节点的值 sname := xmldom.getNodeName(xmldom.item(childNodes, j)); svalue := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item(childNodes, j))); dbms_output.put_line(sname || '-'); dbms_output.put_line(svalue || '--'); end loop; end; end loop; --是否dom文档 xmldom.freeDocument(xDoc); --异常和错误处理 EXCEPTION WHEN OTHERS THEN dbms_output.put_line(SQLERRM ); end; 能否帮我补充完善下?

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧