PLSQL读取XML的数据
最近公司做的几个项目,都是通过EBS与外部系统的Web Service进行数据的交互,而调用Web Service的时候,我们所传送的数据,都是按照约定的XML格式来传递,所以EBS接收到数据之后,需要解析该XML数据。以下为此次项目中通过PLSQL解析XML数据的例子。
假设约定的XML格式如下所示:
此处为子库转移的数据,从A子库把某个物料转移到B子库,而由于物料启用批次的关系,在转移的时候,可能存在多个批次,所以XML结构也就有了层次结构。PLSQL代码如下所示:
DECLARE
l_xml xmltype;
CURSOR cur_line(l_xml xmltype) IS
SELECT TRIM(extractvalue(VALUE(l), 'LINES/LINE_ID')) LINE_ID
,TRIM(extractvalue(VALUE(l), 'LINES/SCHEDULE_ARRIVAL_DATE')) SCHEDULE_ARRIVAL_DATE
,TRIM(extractvalue(VALUE(l), 'LINES/SRC_SUBINVENTORY')) SRC_SUBINVENTORY
,TRIM(extractvalue(VALUE(l), 'LINES/DEST_SUBINVENTORY')) DEST_SUBINVENTORY
,TRIM(extractvalue(VALUE(l), 'LINES/COMMENTS')) COMMENTS
,TRIM(extractvalue(VALUE(l), 'LINES/TRANSACTION_TYPE_ID')) TRANSACTION_TYPE_ID
,TRIM(extractvalue(VALUE(l), 'LINES/TXN_ACTION_CODE')) TXN_ACTION_CODE
,TRIM(extractvalue(VALUE(l), 'LINES/INVENTORY_ITEM_ID')) INVENTORY_ITEM_ID
,TRIM(extractvalue(VALUE(l), 'LINES/REQUIRE_QTY')) REQUIRE_QTY
,TRIM(extractvalue(VALUE(l), 'LINES/ACTUAL_SHIP_QTY')) ACTUAL_SHIP_QTY
,TRIM(extractvalue(VALUE(l), 'LINES/TRANSACTION_DATE')) TRANSACTION_DATE
,TRIM(extractvalue(VALUE(l), 'LINES/CREATED_BY')) CREATED_BY
,TRIM(extractvalue(VALUE(l), 'LINES/CREATION_DATE')) CREATION_DATE
,extract(VALUE(l), 'LINES/DETAIL/LINE') lots
FROM TABLE(xmlsequence(extract(l_xml, 'TRANSFER/LINES'))) l;
CURSOR cur_lot(l_lot xmltype) IS
SELECT TRIM(extractValue(VALUE(lot), 'LINE/LOT_NUMBER')) lot_number
,TRIM(extractValue(VALUE(lot), 'LINE/LOT_QTY')) lot_qty
,TRIM(extractValue(VALUE(lot), 'LINE/TRUCK_NO')) truck_no
,TRIM(extractValue(VALUE(lot), 'LINE/DRIVER_NAME')) driver_name
FROM TABLE(xmlsequence(extract(l_lot, 'LINE'))) lot;
BEGIN
SELECT xmltype(p_request_data) INTO l_xml FROM dual;
FOR x IN cur_line(l_xml) LOOP
FOR y IN cur_lot(x.lots) LOOP
NULL;
END LOOP;
END LOOP;
END;
此处代码无法直接运行,因为需要输入有参数没有定义,大概的使用方法就是上面所示。
另外,此处是针对XML结构比较复杂,有多层结构,如果只是扁平的单行结构的话,则处理方法类似,且更加简单了。
转载请注明出处……
PLSQL读取XML的数据的更多相关文章
- C#读取xml节点数据方法小结
本文实例总结了C#读取xml节点数据的方法.分享给大家供大家参考.具体如下: 第一种: 使用XPath XML的路径我配置在web.config 的appSettings节点下 <appSett ...
- 第一周:读取XML深度数据并将其重建为三维点云
本周主要任务:学习PCL点云库,掌握利用PCL对点云处理的方法 任务时间:2014年9月1日-2014年9月7日 任务完成情况:完成了读取单幅xml深度数据,并重建三维点云并显示 任务涉及基本方法: ...
- JS读取XML文件数据并以table显示数据(兼容IE火狐)
先看xml文件: <?xml version="1.0" standalone="yes"?> <student> <stuinf ...
- C# 递归读取XML菜单数据
在博客园注册了有4年了,很遗憾至今仍未发表过博客,趁周末有空发表第一篇博客.小生不才,在此献丑了! 最近在研究一些关于C#的一些技术,纵观之前的开发项目的经验,做系统时显示系统菜单的功能总是喜欢把数据 ...
- JAVA读取XML文件数据
XML文档内容如下: <?xml version="1.0" encoding="UTF-8"?> <root> <field t ...
- PHP读取XML文件数据
XML文件 <?xml version="1.0" encoding="UTF-8"?> <node> <student> ...
- Python中如何读取xml的数据
<?xml version="1.0" encoding="utf-8" ?> - <catalog> <maxid>4&l ...
- R语言XML格式数据导入与处理
数据解析 XML是一种可扩展标记语言,它被设计用来传输和存储数据.XML是各种应用程序之间进行数据传输的最常用的工具.它与Access,Oracle和SQL Server等数据库不同,数据库提供了更强 ...
- jQuery、JS读取xml文件里的内容(JS先通过document.implementation.createDocument方法将xml转换成document对象,jQuery将读取到的xml转成table)
xml文件:test.xml <?xml version="1.0"?> <note> <to>George</to> <fr ...
随机推荐
- linux环境配置
一.JDK安装 1.通过xftp工具把jdk-8u60-linux-x64.gz上传到linux 2.解压JDK命令tar -xzf jdk-8u60-linux-x64.gz 3.linux配置环境 ...
- xls数据导入sqlite数据库
protected void btn_ok_Click(object sender, EventArgs e) { try { st ...
- IOS绘图——简单三角形
#import <UIKit/UIKit.h> @interface MyView : UIView @end #import "MyView.h" @implemen ...
- wpMVVM模式绑定集合的应用
一.新建一个项目,命名为wpMVVMone,添加一个有关食品信息的类Food.CS,代码如下: public class Food { public string Name { get; set; } ...
- SQL SERVER中查询参数为空(null)时默认查询所有的实现
最近在项目中碰到一个比较有意思的问题,网上查找了一些方法,在这里总结分享一下. 我们经常会碰到这样的场景:需要查询数据,有一些查询条件,但是查询的时候,我们希望在某个条件为空的时候,则不筛选这个条件, ...
- Maven的HTTP代理设置
http://blog.sina.com.cn/s/blog_4f925fc30102ed3y.html 第一.检测本地网络是否不能直接访问Maven的远程仓库,命令为ping repo1.mav ...
- [Redis] RDB & AOF
http://my.oschina.net/davehe/blog/174662 rdb - 存在dump.rdb 的二进制文件中 dump 整个db, 数据多的时候,不合适频繁保存,保存的时间间隔应 ...
- Java 中的抽象类及接口
抽象类使用 abstract 关键字修饰,该类即为抽象类. 抽象类的作用: 1.某些情况下,父类约束子类必须包含哪些方法,但不知道子类如何去实现这些方法. 2.可以从多个具有相同特征的类中抽象出一个抽 ...
- 实现QQ机器人报警
如题,废话不说,直接上代码.首先是登录QQ的小脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...
- phpQuery采集微信公众号文章乱码
终于找到解决方案了,这是一个值得庆祝的事情.... 原来是因为微信在源码中加入了防采集代码<!--headTrap<body></body><head>< ...