oracle解析xml完成版第二次修改

其实XML字符串就好像是ORACLE中的外部表,因此Oracle对 解析XML字符串一些规则要求非常严格。XML字符串提供的数据就是一张表,所以Oracle必须提供跟 xml数据一致的列头

示例一


SELECT * FROM XMLTABLE(‘$B/DEAL_BASIC/USER_DEAL_INFO‘ PASSING

XMLTYPE(‘<?xml version="1.0" encoding="gb2312" ?>&xml‘) AS B

COLUMNS USER_DEAL_ID VARCHAR2(50) PATH    ‘/USER_DEAL_INFO/USER_DEAL_ID‘,

DEAL_INURE_TIME VARCHAR2(50)    PATH    ‘/USER_DEAL_INFO/DEAL_INURE_TIME‘,

DEAL_EXPIRE_TIME VARCHAR2(50)   PATH    ‘/USER_DEAL_INFO/DEAL_EXPIRE_TIME‘,

DEAL_CREATE_TIME VARCHAR2(50)   PATH    ‘/USER_DEAL_INFO/DEAL_CREATE_TIME‘);

<DEAL_BASIC>

<USER_DEAL_INFO>

<USER_DEAL_ID>1000100001</USER_DEAL_ID>

<DEAL_INURE_TIME>20081130</DEAL_INURE_TIME>

<DEAL_EXPIRE_TIME>30000101</DEAL_EXPIRE_TIME>

<DEAL_CREATE_TIME>20081130</DEAL_CREATE_TIME>

</USER_DEAL_INFO>

</DEAL_BASIC>

xml version="1.0" 指定xml的版本

encoding="gb2312" 指定xml字符串的字符编码 

以上 < >中的内容可以省略

示例二(单行正常显示)


SELECT * FROM XMLTABLE(‘$B/ROW‘ PASSING

XMLTYPE(‘<?xml version="1.0" encoding="gb2312" ?>&xml‘) AS B

COLUMNS

TP_ID   NUMBER              PATH        ‘/ROW/TP_ID‘,

TP_NAME VARCHAR2(50)        PATH        ‘/ROW/TP_NAME‘,

TP_PARENTID NUMBER          PATH        ‘/ROW/TP_PARENTID‘,

TP_SNAME VARCHAR2(50)       PATH        ‘/ROW/TP_SNAME‘);

<ROW>

<TP_ID>112</TP_ID>

<TP_NAME>ORACLE</TP_NAME>

<TP_PARENTID>0</TP_PARENTID>

<TP_SNAME>R</TP_SNAME>

</ROW>

示例三 (单行正常显示,字符不加单引号。数据反写之后 字符自动添加 单引号)


SELECT * FROM XMLTABLE(‘$B/ROW‘ PASSING

XMLTYPE(‘<?xml version="1.0" encoding="gb2312" ?>&xml‘) AS B

COLUMNS

TP_ID   NUMBER              PATH        ‘/ROW/TP_ID‘,

TP_NAME VARCHAR2(50)        PATH        ‘/ROW/TP_NAME‘,

TP_PARENTID NUMBER          PATH        ‘/ROW/TP_PARENTID‘,

TP_SNAME VARCHAR2(50)       PATH        ‘/ROW/TP_SNAME‘);

<ROW>

<TP_ID>112</TP_ID>

<TP_NAME>计算机网络技术</TP_NAME>

<TP_PARENTID>0</TP_PARENTID>

<TP_SNAME>R</TP_SNAME>

</ROW>

--反写语句如下:

insert into XMLTABLE (TP_ID, TP_NAME, TP_PARENTID, TP_SNAME) values (112, ‘计算机网络技术‘, 0, ‘R‘);

示例四 (xml文件中字符不能添加单引号  ’ 和 双引号 ")-


SELECT * FROM XMLTABLE(‘$B/DEAL_BASIC/USER_DEAL_INFO‘ PASSING

XMLTYPE(‘ &XML‘) AS B

COLUMNS USER_DEAL_ID NUMBER         PATH    ‘/USER_DEAL_INFO/ROW_ID‘,

DEAL_INURE_TIME VARCHAR2(50)        PATH    ‘/USER_DEAL_INFO/ROW_TIME‘,

DEAL_EXPIRE_TIME VARCHAR2(50)       PATH    ‘/USER_DEAL_INFO/ROW_NAME‘);

<DEAL_BASIC>

<USER_DEAL_INFO>

<ROW_ID>1000100001</ROW_ID>

<ROW_TIME>ORACLE</ROW_TIME>

<ROW_NAME>30000101</ROW_NAME>

</USER_DEAL_INFO>

<USER_DEAL_INFO>

<ROW_ID>1000100001</ROW_ID>

<ROW_TIME>"ORACLE"</ROW_TIME>

<ROW_NAME>30000101</ROW_NAME>

</USER_DEAL_INFO>

</DEAL_BASIC>

--反写语句如下:  insert into XMLTABLE (USER_DEAL_ID, DEAL_INURE_TIME, DEAL_EXPIRE_TIME)  values (‘1000100001‘, ‘"ORACLE"‘, ‘30000101‘);

示例四(多行正常显示)


SELECT * FROM XMLTABLE(‘$B/ORDERLIST/ORDER‘ PASSING

XMLTYPE(‘ &XML‘) AS B

COLUMNS ORDERID    NUMBER     PATH    ‘/ORDER/ORDERID‘,

ORDERNUMBER        NUMBER     PATH    ‘/ORDER/ORDERNUMBER‘,

ORDERPRICEE        NUMBER     PATH    ‘/ORDER/ORDERPRICE‘);

<ORDERLIST>

<ORDER>

<ORDERID>1</ORDERID>

<ORDERNUMBER>857544544</ORDERNUMBER>

<ORDERPRICE>54</ORDERPRICE>

</ORDER>

<ORDER>

<ORDERID>2</ORDERID>

<ORDERNUMBER>858544544</ORDERNUMBER>

<ORDERPRICE>63</ORDERPRICE>

</ORDER>

<ORDER>

<ORDERID>3</ORDERID>

<ORDERNUMBER>454854555</ORDERNUMBER>

<ORDERPRICE>781</ORDERPRICE>

</ORDER>

</ORDERLIST>

时间: 2024-10-26 19:09:42

oracle解析xml完成版第二次修改的相关文章

oracle解析xml完成版

SELECT * FROM XMLTABLE('$B/DEAL_BASIC/USER_DEAL_INFO' PASSING XMLTYPE('<?xml version="1.0" encoding="gb2312" ?>&xml') AS B COLUMNS USER_DEAL_ID VARCHAR2(50) PATH '/USER_DEAL_INFO/USER_DEAL_ID', DEAL_INURE_TIME VARCHAR2(50) PA

Oracle解析 xml 记录一下(未完待续)

Oracle解析 xml 记录一下. SQL> desc xmlparser; PROCEDURE FREEPARSER Argument Name                  Type                    In/Out Default? ------------------------------ ----------------------- ------ -------- P                              RECORD          

ORACLE 解析xml字符串-转载的

1.xml字符串 /* <orderlist>        <order>        <orderid>1</orderid>        <ordernumber>857544544</ordernumber>        <orderprice>54</orderprice>        </order>                <order>        <

Java解析XML简单版

JAVA 文件 import java.io.File; import javax.xml.parsers.*; import org.w3c.dom.*; public class XmlReaderTest { public static void main(String[] args) throws Exception { DocumentBuilder db = DocumentBuilderFactory.newInstance() .newDocumentBuilder(); Doc

解析XML文件时做得修改

在.h文件中找到需要在Build Settings中设置的东西, 随后在Build Settings中进行设置,

Oracle解析XML 节点信息并转换String 类型

select   xmltype(dataxml).extract('/data/sqr_mc/text()').getstringval()  as sqrmc from t_ins_formdata where bsnum='170215085821005401' 原文地址:https://www.cnblogs.com/auldlangsynezh/p/8178196.html

Digester解析xml文件

刚刚学了一下Digester如何解析xml文件,所以记录下来,方便以后查看. 一般用来读取xml文件的工具包有DOM.SAX和JDOM等,但用过的人都知道,它们属于比较底层的API,写起来代码量很大,而且如果修改了xml文件的格式,代码也要做大幅度的改动.而使用Apache Jakarta的Digester,解析XML文件非常方便且不需要过多的关心底层的具体解析过程.Digester本来仅仅是Jakarta Struts中的一个工具,用于处理struts-config.xml配置文件.显然,将X

python 解析XML xml.dom

一 .xml.dom 解析XML的API描述 minidom.parse(filename) 加载读取XML文件 doc.documentElement 获取XML文档对象 node.getAttribute(AttributeName) 获取XML节点属性值 node.getElementsByTagName(TagName) 获取XML节点对象集合 node.childNodes 返回子节点列表. node.childNodes[index].nodeValue 获取XML节点值 node.

HL7 2.6解析转XML(C#版)

项目中需要解析HL7,所以在网上找到解析代码,但错误很多,所以我修改了一下,测试好用. using System; using System.Collections.Generic; using System.Text; using System.Xml; using System.Text.RegularExpressions; namespace PT.Common { /// <summary> /// HL7解析器 /// </summary> public static