ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:18.20KB ,
资源ID:9192779      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9192779.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(oracle中对小xml文件的解析方法.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

oracle中对小xml文件的解析方法.docx

1、oracle中对小xml文件的解析方法-生成xml层级标签: xmlelement,null或都会有结束标签,不会出现单标签select xmlelement(test, null) from dual;select xmlelement(aa, xmlelement(bb, xmlelement(cc, 1), xmlelement(dd, 2)from dual;-生成xml属性值: xmlattributes, null或不会出现对应的键名select xmlelement(test, 123, xmlelement(a1, xmlattributes(123456 test_attri

2、bute), 值1, xmlelement(a2, xmlattributes(1 test1, 2 test2, test3, null test4), 值2)from dual;-生成层级标签:xmlforest,如果需要定义标签节点属性则不能使用,null不生成对应节点-单条数据进行列名匹配取值,生成的标签不一样select xmlelement(test, xmlforest(null test1, 1 test2, 3 test3)from dual;select xmlforest(1 performance1, 1 test2, 3 test3) from dual;-生成层级标

3、签:xmlagg-多条数据,给定标签名,匹配列名对应的值生成多个元素值with t as (select 1 a, A b from dual) union all select 2, A b from dual union all select 3, B b from dual)-select xmlelement(KK, xmlagg(xmlelement(test, a) from t group by b;-select xmlelement(TT, (- select xmlagg(xmlelement(test, a) order by a) from t) -from dual;

4、-可以生成无效的xml,xml只能有一个根节点select xmlagg(xmlelement(test, a) from t;-直接写xml,格式不对会报错select xmltype.createxml(12) from dual;-rtrim()去右侧空格返回一段字符串with q as (select 1 key, a x from dual union all select 2 key, b x from dual union all select 3 key, c x from dual union all select 4 key, d x from dual)/*select

5、x,rtrim( xmlagg(xmlelement(e, key|,) order by key) as concatvalfrom q group by x;*/-extract() 摘取xml,时间,文本等select x, rtrim(xmlagg(xmlelement(e, key | ,) order by key) .extract(/text(), ,) as concatval from q group by x;-xmlconcat:拼接xml元素select xmlconcat(xmlelement(x, xmlattributes(123 xmlns), xmlelem

6、ent(y, 10), xmlelement(y, 20), xmlelement(x, xmlattributes(xyz xmlns), xmlelement(y, 20), xmlelement(y, 10), xmlelement(x, xmlattributes(xyz xmlns), xmlelement(y, 60), xmlelement(y, 10)from dual-UPDATEXML 修改xml标准内容和attribute-UPDATEXML(xmltype_instance, xpath_expression, value_expr, namespace_expr)-x

7、ml: 1 Martin Chadderton 1000 -可以同时修改多个标签内容SELECT UPDATEXML(XMLTYPE( 1 Martin Chadderton 1000 ), /DEPT/SALARY/text(), -通过XPath表达式,指定要修改的标签元素 1100, /DEPT/EMPID/text(), AA) FROM DUAL;-区分大小写select updatexml( xmltype( 1 Martin Chadderton 1000 ), /DEPT/SALARY/text(), 1200 ) from dual;-如果标签元素没有值,则更新该标签的数据时

8、也会无效,这是Oracle bug 2962474SELECT UPDATEXML(XMLTYPE( 1 Martin Chadderton ), /DEPT/SALARY/text(), 1100) FROM DUAL;-可通过下面语句解决,重写该标签,找不到对应要修改的标签不会报错SELECT UPDATEXML(XMLTYPE( 1 Martin Chadderton ), /DEPT/SALARY, XMLTYPE(论文论著其他2) FROM DUAL;-修改属性,找不到对应要修改的属性不会报错SELECT UPDATEXML(XMLTYPE( 1 Martin Chadderton

9、3 ), /DEPT/SALARY/taxable, no,/DEPT/SALARY/text(),123) FROM dual;-更新为null-1.SELECT UPDATEXML(XMLTYPE( 1 Martin Chadderton 1000 ), /DEPT/SALARY/text(), NULL) FROM dual;-2、SELECT UPDATEXML(XMLTYPE( 1 Martin Chadderton 1000 ), /DEPT/SALARY, null) FROM dual;-更新父节点,为null则所有字节点都消失,剩下父节点SELECT UPDATEXML(XM

10、LTYPE( 1 Martin Chadderton 1000 ), /DEPT, null) FROM dual;-去除父节点下所有字节点的值(采用通配符)-1.SELECT UPDATEXML(XMLTYPE( 1 Martin Chadderton 1000 ), /DEPT/*, NULL) FROM dual;-2.如果父节点有属性,一定要指出,或则更新不到数据SELECT UPDATEXML(XMLTYPE( 1 Martin Chadderton 1000 ), /DEPT/EMPID/text(), NULL, /DEPT/EMPNAME/text(), NULL, /DEPT

11、/SALARY/text(), NULL,xmlns=xyz) FROM dual;-高级应用,指定的namespace_expr 下,更新z=10的数值DECLARE X XMLTYPE := XMLTYPE(102010);BEGIN SELECT UPDATEXML(X, /x/z. = 10/text(),30,xmlns=xyz) INTO X FROM DUAL; DBMS_OUTPUT.PUT_LINE(X.GETCLOBVAL);END;-UPDATEXML可修改非标准xml(根节点多个)DECLARE X XMLTYPE := XMLTYPE(1020);BEGIN SELE

12、CT UPDATEXML(XMLCONCAT(XMLELEMENT(x, Xmlattributes(123 xmlns),XMLELEMENT(y, 10),XMLELEMENT(y, 20), XMLELEMENT(x,Xmlattributes(xyz xmlns), XMLELEMENT(y, 20),XMLELEMENT(y, 10),XMLELEMENT(x,Xmlattributes(xyz xmlns), XMLELEMENT(y, 10),XMLELEMENT(y, 10), /x/y. = 10/text(),AA,xmlns=xyz) INTO X FROM DUAL;

13、DBMS_OUTPUT.PUT_LINE(X.GETCLOBVAL);END;-删除某个节点-1.通用做法 10.1之前DECLARE x XMLTYPE := XMLTYPE(10X2010Y); BEGIN SELECT UPDATEXML(x, /a/bstarts-with(c,10), NULL) INTO x FROM dual; dbms_output.put_line(REPLACE(x.getstringval,); END;-2.10.2及以上(DELETEXML)-DELETEXML(xmltype_instance, xpath_expression, namespac

14、e_expr)DECLARE x XMLTYPE := XMLTYPE(10X2010Y); BEGIN SELECT DELETEXML(x, /a/bstarts-with(c,10),xmlns=xyz) INTO x FROM dual; dbms_output.put_line(x.getstringval); END;-如果有父节点有属性,一定要指出,或则删不了DECLARE x XMLTYPE := XMLTYPE(10X110X); BEGIN SELECT DELETEXML(x, /a/b,xmlns=xyz) INTO x FROM dual; dbms_output.p

15、ut_line(x.getclobval); END;-XMLROOT 增加xml开头信息,这个目前不支持编码的指定SELECT XMLROOT(XMLELEMENT(x, dummy), VERSION 1.0 , STANDALONE YES) FROM dual;-XMLCOMMENT 增加xml注释 EXTRACT(/)在sqlplus显示的时候格式会好看一些SELECT XMLELEMENT(x, XMLELEMENT(x1, dummy), XMLCOMMENT(Test Comment), XMLELEMENT(x2, dummy) ).EXTRACT(/) FROM dual;

16、-XMLCDATA 10g之前没有这个函数, CDATA节是用来告诉XML解析器将一切作为数据。如果你有一个要求发送信息,例如,有很多XML“非法”字符,如&、,-但不能包含 SELECT UPDATEXML(XMLELEMENT(parent, XMLCDATA(Here is a string with a ),/parent/text(),123) FROM dual; SELECT XMLELEMENT(parent, XMLCDATA(Here is a! string with a and a) FROM dual;-如果值为空或null不会生成CDATA SELECT XMLEL

17、EMENT(x, XMLCDATA() FROM dual; /*=通过xml获取数据= */-xmltable -XMLTABLE( PASSING - COLUMNS PATH , PATH .)select * from tt,xmltable(/ipmp/head passing xmltype(tt.clb_content) columns reference varchar2(99) path reference, busiCode varchar2(99) path busiCode) WHERE clb_content LIKE %ipmp%;-如果字段类型长度比值还短,会进行

18、截取 select *from xmltable(/a/b passing xmltype(112021230) columns b varchar2(2) path .);-不用xmltable的实现方式SELECT EXTRACTVALUE(VALUE(t), /a/b) b, EXTRACTVALUE(VALUE(t), /a/c) aFROM TABLE(XMLSEQUENCE(EXTRACT(XMLTYPE(1020), /a) t;-指定返回类型SELECT * FROM XMLTABLE(/a/b PASSING XMLTYPE(10) COLUMNS b_as_varchar2

19、 VARCHAR2(2) PATH ./b, b_as_xmltype XMLTYPE PATH /, b_as VARCHAR2(3) PATH .);-获取属性select *from xmltable(/a passing xmltype(1020) columns b varchar2(2) path b, battr varchar2(1) path b/battr, c varchar2(2) path c);-获取指定命名空间的相关标签select t.b, t.cfrom XMLTABLE(XMLNAMESPACES(namespace2 AS ns1), /t/ns1:a P

20、ASSING XMLTYPE(aabb1020) COLUMNS b VARCHAR2(2) PATH ns1:b, c VARCHAR2(2) PATH ns1:c) t;-获取指定不同命名空间的相关标签,如果xml里面有指定,在获取的时候也要指定,否则取不到数据select t.b, t.cfrom XMLTABLE(XMLNAMESPACES(namespace1 AS ns1, namespace2 AS ns2), /ns1:a PASSING XMLTYPE(1020) COLUMNS b VARCHAR2(2) PATH ns2:b, c VARCHAR2(2) PATH ns1

21、:c) t;-如果节点下有相关的标签,则可以通过下面去获取各自的值-12cSELECT c.ref, c.val FROM XMLTABLE(/a/b/c PASSING XMLTYPE(1102030) RETURNING SEQUENCE BY REF COLUMNS ref INTEGER PATH ./ref, val INTEGER PATH /) p-12c以下 SELECT p.ref, c.val FROM XMLTABLE(/a/b PASSING XMLTYPE(11102030) COLUMNS ref INTEGER PATH ref, cxml XMLTYPE PAT

22、H c) p, XMLTABLE(/c PASSING p.cxml COLUMNS val INTEGER PATH /) c-XMLEXISTS 11g以上才有 XMLEXISTS( PASSING ) 判断xml是否存在节点WITH x AS (SELECT XMLTYPE() a FROM dual)SELECT CASE WHEN XMLEXISTS(/a/c PASSING x.a) THEN TRUE ELSE FALSE ENDFROM x;-带命名空间WITH x AS (SELECT XMLTYPE() a FROM dual)SELECT CASE WHEN XMLEXISTS(declare namespace ns1=abc;declare namespace ns2=q; (:) /ns1:a/ns2:b PASSING x.a) THEN TRUE ELSE FALSE ENDFROM x;-例子WITH t as (select xmltype(AA) xmlvar from dual )select xmlvarfrom twhere XMLEXISTS (/CODEVALUE.=AA PASSING xmlvar);WITH t as (select xmltype( ClaimCause 1 A Claim 1 AA Y Rema

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2